[Obj-c] Problem med NSTableView

Permalänk
Medlem

[Obj-c] Problem med NSTableView

God kväll!

Jag håller på att skapa en Adressbok, och nästan allting fungerar perfekt; Förutom att visa datan i en tabell (NSTableView). Felet jag får när jag skall visa datan är följande:

2007-09-30 18:26:36.447 Adressboken[1041] *** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1)

Samt att allting fryser.

Jag har suttit i otaliga timmar nu och kommer icke på varför det blir på detta vis. :/

Här är koden:
http://rafb.net/p/ejRGX773.html

All hjälp uppskattas.

MvH/Boerworz

Permalänk

Du har en array någonstans som du försöker nå ett element som inte finns.

Dvs:

int Kalle[2] = { 1,2 };

printf ( "%d\n", Kalle[2] ); /* Kommer INTE fungera då man börjar på 0 i arrayer. */

Permalänk
Medlem

Kolla raden:

[thePeople addObjectsFromArray:[thePeopleFromFile componentsSeparatedByString:@\n]];

thePeopleFromFile är @1|2|3|4|5\n. -componentsSeparatedByString: kommer att splitta det till två element, @1|2|3|4|5 och @"", det vill säga tomma strängen. Det försöker du sedan splitta över @|, och sedan sker en exception vid -objectAtIndex:.

Lösningen är att se till att du bara stoppar in valida element i din array. Lite sanity checks på att dina arrayer innehåller vad du tror de innehåller innan du går och plockar ut element kan också vara nyttigt.

För övrigt har du glömt att release stringFromFileAtPath. Du är ansvarig för det objektet i och med att du skapade det med alloc, så kör release på det i slutet av metoden.

Jag hittade det här felet genom att lägga in i symbolisk breakpoint på "-[NSException raise]" och sen köra det i debuggern och titta påalla variabler.

Permalänk
Medlem

Tackar så mycket för hjälpen, nu fungerar det.
En liiiiiten fråga bara, vad använder man istället för "%" i Obj-c?

MvH/Boerworz

Permalänk
Medlem

Istället för "%"? Gissar att du menar formatsträngar? I så fall, se:

http://developer.apple.com/documentation/Cocoa/Conceptual/Str...

Permalänk
Medlem

Njae, tänkte på "modulus".
Men upptäckte precis att det var %.
Dock fungerade det inte innan. Aja, tackar så mycket för hjälpen!

MvH/Boerworz