NSArray充满了布尔

时间:2010-10-08 09:15:54

标签: objective-c

我正在尝试创建一个bool值的NSArray。我有多少人这样做?

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

这对我不起作用。

由于

3 个答案:

答案 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]获取可以放入集合中的对象。