用BOOL填充数组时发出警告

时间:2011-04-26 14:45:26

标签: objective-c ios nsmutablearray boolean

我有这段代码:

BOOL booleanValue = TRUE;
[arrayZone replaceObjectAtIndex:indexZone withObject:booleanValue];

此代码向我发出警告:

incompatible integer to pointer conversion: 
sending BOOL to parameter of type 'id'

为什么?

4 个答案:

答案 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];