我有这段代码:
BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:booleanValue];
此代码向我发出警告:
incompatible integer to pointer conversion: sending BOOL to parameter of type 'id'
为什么?
答案 0 :(得分:14)
您需要将BOOL
打包成NSNUmber
,如下所示:
BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:[NSNumber numberWithBool:booleanValue]];
然后,要检索您的BOOL
值,请使用boolValue
将其取消包装:
BOOL b = [[arrayZone objectAtIndex:index] boolValue];
答案 1 :(得分:0)
您只能在NSArray
内存储对象,而不能存储基本类型。
干杯
答案 2 :(得分:0)
此问题似乎与Objective C Boolean Array
重复本质上,BOOL是一种原始类型 - 你必须将它包装在一个Object中以消除警告。
答案 3 :(得分:0)
BOOL是一种基本类型,您的数组需要一个对象。这就是你需要将它包装在NSNumber中的原因。但是对于较新的xcode,您只需键入@YES或@NO,xcode就会将其视为numberWithBool。 所以,而不是:
BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:[NSNumber numberWithBool:booleanValue]];
您现在可以使用
[arrayZone replaceObjectAtIndex:indexZone withObject:@YES];