2010-10-08 15 views
5

Ich versuche, ein NSArray Bool Werte zu erstellen. Wie viele mache ich das bitte?NSArray gefüllt mit bool

NSArray *array = [[NSArray alloc] init]; 
array[0] = YES; 

das funktioniert nicht für mich.

Dank

Antwort

13

NSArrays sind keine C-Arrays. Sie können nicht auf die Werte eines NSArray mit array[foo];
zugreifen, aber Sie können C-Typ-Arrays in Objective-C ohne Probleme verwenden.

würde der Objective-C Ansatz:

NSMutableArray *array = [[NSMutableArray alloc] init]; 
[array addObject:[NSNumber numberWithBool:YES]]; 
//or 
[array addObject:@(NO)]; 
... 
BOOL b = [[array objectAtIndex:0] boolValue]; 
.... 
[array release]; 

EDIT: Object subscripting Neue Versionen von Klappern, die jetzt Standard-Compiler für Objective-C, verstehen. Wenn Sie eine neue Version von clang verwenden, können Sie array[0] = @YES verwenden

+0

Ich versuche das und es gibt mir *** Beenden App aufgrund der nicht abgefangenen Ausnahme 'NSInvalidArgumentException', Grund: '+ [ NSNumber numberWitBOOL:]: Der nicht erkannte Selektor, der an die Klasse – Lilz

+0

gesendet wird, sollte [NSNummer numberWithBool: YES] sein. Sorry, mein Fehler –

+0

Oh vielen Dank! – Lilz

2

Verwenden [NSNumber numberWithBool: YES] ein Objekt bekommen Sie in der Sammlung setzen.

+0

array [0] = [NSNumber numberWithBool: YES]; gibt mir eine 'inkompatible Typen in Zuordnung' Fehler – Lilz

+0

[Array addObject: [NSNumber numberWithBool: YES]] –

3

Scheint, Sie haben c-Array mit Objc NSArray verwechselt. NSArray ist mehr wie ein list in Java, in dem Sie Objekte hinzufügen können, aber keine Werte wie NSInteger, BOOL, double usw. Wenn Sie solche Werte in einem NSArray speichern möchten, müssen Sie zuerst ein veränderbares Array erstellen:

NSMutableArray* array = [[NSMutableArray alloc] init]; 

und fügen sie dann die richtige Objekt, um es (in diesem Fall werden wir NSNumber verwenden Ihre BOOL Wert zu speichern):

[array addObject:[NSNumber numberWithBool:yourBoolValue]]; 

Und das ist es ziemlich viel! Wenn Sie den Bool Wert zugreifen möchten, rufen Sie einfach an:

BOOL yourBoolValue = [[array objectAtIndex:0] boolValue]; 

Cheers, Pawel