如何将(BOOL *)插入NSMutableDictionary

时间:2011-11-11 00:59:07

标签: ios nsmutabledictionary

我正在尝试将布尔数据库值保存到地图中,如下所示 -

[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]];

它给我一个错误,说“不兼容的指向整数转换的指针发送BOOL * aka signed char * to'BOOL'又名signed char”

如何将BOOL *插入字典?

2 个答案:

答案 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)。