NSArray заполнен bool - PullRequest
       1

NSArray заполнен bool

5 голосов
/ 08 октября 2010

Я пытаюсь создать NSArray значений bool.Сколько я делаю это, пожалуйста?

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

это не работает для меня.

Спасибо

Ответы [ 3 ]

13 голосов
/ 08 октября 2010

NSArrays не являются c-массивами.Вы не можете получить доступ к значениям NSArray с помощью array[foo];
, но вы можете без проблем использовать массивы типа c внутри target-C.

Подход Objective-C будет следующим:

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

РЕДАКТИРОВАТЬ: новые версии clang, теперь стандартного компилятора для target-c, понимают подписка объекта .Когда вы используете новую версию Clang, вы сможете использовать array[0] = @YES

3 голосов
/ 08 октября 2010

Похоже, вы перепутали массив c с objc NSArray.NSArray больше похож на список в Java, в который вы можете добавлять объекты, но не такие значения, как NSInteger, BOOL, double и т. Д. Если вы хотите сохранить такие значения в NSArray, сначала необходимо создатьИзменяемый массив:

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

И затем добавьте к нему надлежащий объект (в этом случае мы будем использовать NSNumber для хранения вашего значения BOOL):

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

И это во многом!Если вы хотите получить доступ к значению bool, просто позвоните:

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

Cheers, Pawel

2 голосов
/ 08 октября 2010

Используйте [NSNumber numberWithBool: YES], чтобы получить объект, который вы можете поместить в коллекцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...