似乎很容易将一个布尔值添加到NSMutableArray。
假设toDoArray初始化为NSMutableArray。以下内容:
BOOL checkBoxState = NO;
[toDoArray addObject:checkBoxState];
生成错误“尝试插入nil。”
将负布尔值添加到可变数组的正确方法是什么?
答案 0 :(得分:6)
正如其他人所说,NSMutableArray
只能包含Objective-C对象。它们不必是NSObject
的子类,但这是最典型的。
但是,在您看到attempt to insert nil.
运行时错误之前很久,您应该看到编译器警告:
warning: passing argument 1 of 'addObject:' makes pointer from integer without a cast
以一种模糊而迂回的方式告诉你究竟是什么问题;你试图将某些东西粘贴到一个不是[指向对象]指针的数组中。
注意警告并修复它们。大多数情况下,警告的存在将指示运行时错误或崩溃。
答案 1 :(得分:5)
NSMutable数组需要一个id,它是Objective C的一个奇怪部分.id是任何对象,但不是原语(例如,int
是原语,而NSArray
是对象,在扩展中,id
s)。
This question可能会有所帮助。
答案 2 :(得分:0)
在将它放入集合对象(NSArray,NSDictionary等)之前,需要使用NSNumber来包装任何基本类型(BOOL,int,NSInterger等)。
将BOOL添加到数组:
BOOL checkBoxState = NO;
NSNumber* n = [NSNumber numberWithBool:checkBoxState];
[toDoArray addObject:n];
从数组获取BOOL:
NSNumber* n = [toDoArray objectAtIndex:0];
BOOL checkBoxState = [n boolValue];