我正在尝试将布尔数据库值保存到地图中,如下所示 -
[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]];
它给我一个错误,说“不兼容的指向整数转换的指针发送BOOL * aka signed char * to'BOOL'又名signed char”
如何将BOOL *插入字典?
答案 0 :(得分:41)
将BOOL包裹在NSNumber:
中NSNumber *boolNumber = [NSNumber numberWithBool:YES];
要解决这个问题:
BOOL b = [boolNumber boolValue];
您可以在NSValue中包装其他非对象类型(例如指针或结构)。
编辑:假设你真的是指BOOL *(指针):
NSValue *boolValue = [NSValue value:pointerToBool withObjCType:@encode(BOOL*)];
BOOL *b = [boolValue pointerValue];
答案 1 :(得分:0)
您的isSet
方法需要具有以下签名:- (BOOL)isSet;
假设情况确实如此,使用chromedecoy提到的NSNumber应该没有任何问题。
你的最后一句话引起了我的兴趣,BOOL *
。当然你的意思是BOOL
,如果你绝对需要一个布尔引用,那么我建议你将初始/实际BOOL存储在NSNumber中,并将对象的引用存储在你需要它的任何地方(即您的NSMutableDictionary)。