2010-10-08 42 views
5

我想创建一个布尔值的NSArray。请问我有多少人?NSArray充满布尔

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

这对我不起作用。

感谢

回答

13

NSArrays不是c数组。你不能访问一个NSArray的值与array[foo];
但你可以在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]; 

编辑:铿锵的新版本,现在的标准编译器的Objective-C,了解Object subscripting。当你使用叮当的新版本,你将能够使用array[0] = @YES

+0

我试图,它给我***由于未捕获的异常'NSInvalidArgumentException'终止应用程序,原因:'+ [ NSNumber numberWithBOOL:]:发送到类 – Lilz 2010-10-08 09:37:01

+0

的无法识别的选择器应该是[NSNumber numberWithBool:YES]。对不起,我的错误 – 2010-10-08 09:38:40

+0

哦,非常感谢! – Lilz 2010-10-08 09:43:54

2

使用[NSNumber numberWithBool: YES]得到一个对象,你可以把收藏。

+0

阵列[0] = [NSNumber的numberWithBool:YES];给我一个'不兼容的类型赋值'错误 – Lilz 2010-10-08 09:19:55

+0

[数组addObject:[NSNumber numberWithBool:YES]] – 2010-10-08 09:22:33

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