我正在尝试创建一个bool值的NSArray。我有多少人这样做?
NSArray *array = [[NSArray alloc] init];
array[0] = YES;
这对我不起作用。
由于
答案 0 :(得分:13)
NSArrays不是c-arrays。您无法使用array[foo];
来访问NSArray的值
但是你可以在objective-C中使用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的新版本,现在是objective-c的标准编译器,了解Object subscripting。当您使用新版本的clang时,您将能够使用array[0] = @YES
答案 1 :(得分:3)
好像你把c数组与objc NSArray搞混了。 NSArray更像是Java中的list,您可以在其中添加对象,但不能添加NSInteger,BOOL,double等值。如果您希望将这些值存储在NSArray中,首先需要创建一个可变数组:
NSMutableArray* array = [[NSMutableArray alloc] init];
然后添加适当的对象(在这种情况下,我们将使用NSNumber来存储您的BOOL值):
[array addObject:[NSNumber numberWithBool:yourBoolValue]];
这就是它!如果您想访问bool值,请致电:
BOOL yourBoolValue = [[array objectAtIndex:0] boolValue];
干杯, 的Pawel
答案 2 :(得分:2)
使用[NSNumber numberWithBool: YES]
获取可以放入集合中的对象。