1

我需要在 NSMutableDictionary 中存储一些 bool 值,所以我建立了一个解决方案:使用 [NSNumber numberWithBool] 从 bool 创建一个对象。它的值为 YES 可以正常工作,但 NO 有时可以正常工作,有时结果是“不是objective-c 对象”。我的代码:

$ //sometimes fine, but sometimes "not an objective-c object"
$ NSNumber* nsn = [NSNumber numberWithBool:NO];

我是 Objective-C 的新手,所以如果这是基本问题,我很抱歉,但我真的坚持下去。感谢帮助。

4

3 回答 3

0

尝试以下任一:

NSObject * y1 = @(YES) ;
NSObject * n1 = @(NO) ;
NSObject * y2 = @YES ;
NSObject * n2 = @NO ;

另一个例子:

NSDictionary * testDict = @{
    @"key1": @YES
,   @"key2": @NO
} ;

BOOL b = [testDict[@"key1"] boolValue] ;
于 2013-12-09T05:36:27.597 回答
0

老兄。为什么不创建自己的类:

@interface Fool
{
   bool _amIFool;
}
@property bool amIFool;
@end

@implementation
-(bool)amIFool
{
   return _amIFool;
}

-(void)setAmIFool:(bool)amIFool
{
   _amIFool = amIFool
}

@end

然后你可以把它塞进字典里。上面的代码只是一个例子。你可以写一些更好的东西......

编辑:您甚至可以编写一个比较器,这样您就可以直接进行比较等。甚至写了一个方便的方法,所以很容易初始化......

编辑:仅供参考,我最初的实现被称为“酷”。但由于我不酷,我选择了“傻瓜”。你可以做任何一个。

于 2013-12-09T05:43:42.417 回答
0

返回的对象似乎是通过字符串初始化 NSNumber ,当您将对象映射到字典中时,numberWithBool它确实为空。因此字典会说它为空。initWithBoolNSValue

于 2013-12-09T05:21:28.780 回答