2010-07-15 12 views

Antwort

20

Sie können nil nicht in einer Foundation-Sammlungsklasse wie NSArray speichern, Sie müssen verwenden. Um zu überprüfen, ob ein Mitglied des Arrays NSNull ist, würden Sie dies tun:

for (int i = 0; i < 6; i ++) { 
    if ([array objectAtIndex:i] == [NSNull null]) { 
     NSLog(@"object at index %i has no data", i); 
    } 
} 

Wenn Sie sehen möchten, wie viele Elemente im Array sind, verwenden -[NSArray count]. Wenn Sie durch das Array iterieren wollen zu sehen, ob jede Objekt NSNull ist, aber Sie kümmern sich nicht, die man, könnte man schnell Aufzählung verwenden oder -[NSArray containsObject:]:

for (id anObject in array) { 
    if (anObject == [NSNull null]) { 
     // Do something 
    } 
} 

oder

if ([array containsObject:[NSNull null]]) { 
    // Do something 
} 
+0

ok! Danke für die Information! nützliche Codes, die ich verwenden könnte. – Kenneth

1

Sie können nicht null Werte in einem NSArray (oder NSMutableArray). So wird Ihre if-Klausel niemals True zurückgeben. Außerdem sollten Sie nil anstelle von NULL verwenden.

+0

oh ich sehe verwenden. kein Wunder, dass ich Fehler bekomme. Vielen Dank! – Kenneth

+0

'nil' und' NULL' sind das gleiche. * Nach Konvention * verwenden wir 'nil' für Objektzeiger und' NULL' für alles andere, aber es ist nur Konvention. Es gibt keinen Unterschied zwischen den beiden. (Sie können dies durch cmd-Doppelklick auf ein 'nil' überprüfen und sehen, wie es definiert ist) –

+0

yeah, du hast Recht –

1

Ähnlich wie @Marco sagte: Sie garantiert, dass objectAtIndex: nie nil zurück, wenn etwas schrecklich schief geht. Bis du an diesen Punkt kommst, ist es ohnehin zu spät und du kannst nichts dagegen tun (und du wirst wahrscheinlich eine Ausnahme bekommen, bevor das passiert).

Wenn Sie einen Wert speichern müssen, um anzugeben, dass hier nichts ist, sollten Sie den Singleton [NSNull null] verwenden. Das ist genau, wofür es ist.

+0

in Ordnung hab es! – Kenneth

1

Soweit ich weiß- Es gibt keinen Index ohne ein Objekt. denn wenn Sie ein Objekt entfernen, wird das Array von selbst abgeschnitten. Sie können ein leeres Objekt wie @ "" oder NSNull einfügen, aber mindestens ein Objekt.

Ein anderer Punkt, erhalten Sie NSRangeException, wenn der Index, den Sie suchen, außerhalb der Grenzen ist.

+0

oh ich sehe. Danke für die Information! – Kenneth

2

Versuchen Sie, die Bedingung

if ([[Array objectAtIndex:i] length] == 0) { 
// Do what you want 
} 
Verwandte Themen