我需要在NSMutableDictionary中存储一些bool值,所以我已经建立了一个解决方案:使用[NSNumber numberWithBool]从bool创建一个对象。 它的工作正常,值为YES,但是没有它有时工作正常,有时结果是“不是一个客观的c对象”。 mycode的:
$ //sometimes fine, but sometimes "not an objective-c object"
$ NSNumber* nsn = [NSNumber numberWithBool:NO];
我是Objective-C的新手,所以如果这是基本问题,我很抱歉,但我真的坚持了下来。 谢谢你的帮助。
答案 0 :(得分:0)
numberWithBool
和initWithBool
返回的对象似乎是用字符串初始化NSNumber,当你在字典中映射对象时,NSValue
确实为空。因此,字典会将其视为空。
答案 1 :(得分:0)
尝试以下任一方式:
NSObject * y1 = @(YES) ;
NSObject * n1 = @(NO) ;
NSObject * y2 = @YES ;
NSObject * n2 = @NO ;
另一个例子:
NSDictionary * testDict = @{
@"key1": @YES
, @"key2": @NO
} ;
BOOL b = [testDict[@"key1"] boolValue] ;
答案 2 :(得分:0)
多德。你为什么不创建自己的类:
@interface Fool
{
bool _amIFool;
}
@property bool amIFool;
@end
@implementation
-(bool)amIFool
{
return _amIFool;
}
-(void)setAmIFool:(bool)amIFool
{
_amIFool = amIFool
}
@end
然后你可以把它推到字典里。上面的代码只是一个例子。你可以写一些更好的东西......
编辑:你甚至可以写一个比较器,这样你就可以直接进行比较和填充。甚至写一个方便的方法,因此很容易初始化...
编辑:仅供参考,我最初的实施被称为“酷”。但由于我不酷,我选择了“傻瓜”。你可以做任何一件事。