Objective-C中的布尔问题

Objective-C中的布尔问题,objective-c,Objective C,当我试图从字典中获取布尔值时,我得到: BOOL isTrue = [someDict objectForKey: @"isTrue"]; 我得到: Initialization makes integer from pointer without a cast 我通过以下操作设置词典: self.someDict = [[NSMutableDictionary alloc] initWithObjectsAndKeys: self.isTrue, @"isTrue"

当我试图从字典中获取布尔值时,我得到:

BOOL isTrue = [someDict objectForKey: @"isTrue"];
我得到:

Initialization makes integer from pointer without a cast
我通过以下操作设置词典:

self.someDict = [[NSMutableDictionary alloc]
    initWithObjectsAndKeys:
        self.isTrue, @"isTrue",
        nil];
有什么想法吗?

使用:

BOOL isTrue = [[someDict objectForKey:@"isTrue"] boolValue];
BOOL
存储在
NSDictionary
中的唯一方法是将其放入
NSNumber
对象中。
BOOL
是基本的,字典只保存对象

同样,要在字典中存储
BOOL
,请使用:

[someDict setObject:[NSNumber numberWithBool:isTrue] forKey:@"isTrue"];
编辑:(回应评论)

有两种方法可以将其表示为
@属性
。一个是将ivar声明为
BOOL
,另一个是将其声明为
NSNumber

对于第一种情况,ivar为:
BOOL-isTrue,属性为
@property BOOL isTrue(显然,我忽略了命名约定)

对于
NSNumber
,ivar为:
NSNumber*isTrue
且属性为
@property(非原子,保留)NSNumber*isTrue。如果使用此路线,您可能希望提供第二个setter方法(
setIsTrueBool
或其他方法),允许您只需传入
YES
NO
,然后您自己进行装箱。否则,任何打电话的人都必须自己打拳击


我个人最有可能选择选项#1,但这实际上取决于类的用途。

@property的外观如何?我有@property(非原子,赋值)布尔值;