我想一個布爾數據庫值保存到圖如下 -如何插入(BOOL *)到的NSMutableDictionary
[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]];
它給了我一個錯誤說「不兼容的指針整數轉換髮送BOOL * aka signed char *到'BOOL'又名帶符號的字符'
如何將一個BOOL *插入到字典中?
我想一個布爾數據庫值保存到圖如下 -如何插入(BOOL *)到的NSMutableDictionary
[recentTags setValue:[NSNumber numberWithBool:[aMessage isSet]] forKey:[aMessage tagName]];
它給了我一個錯誤說「不兼容的指針整數轉換髮送BOOL * aka signed char *到'BOOL'又名帶符號的字符'
如何將一個BOOL *插入到字典中?
包裹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];
正如你在我的問題中看到的,我已經這樣做了,但它不適合我。那是當我得到我提到的錯誤。 – Suchi
你確定'[aMessage isSet]'正在返回一個BOOL而不是BOOL *嗎?如果它返回後者,則需要使用'[NSNumber numberWithBool:* [aMessage isSet]]'(儘管您應該首先檢查它是否爲NULL)。 – titaniumdecoy
從Clang v3.1開始,我們可以使用文字:'NSNumber * yesNumber = @YES;'和'NSNumber * noNumber = @NO;',相當於'[NSNumber numberWithBool:YES]'等等 – coco
你isSet
方法需要具備以下特徵:- (BOOL)isSet;
假如是這樣的話,有用titaniumdecoy提到的NSNumber不應該有任何問題。
您的最後一句令我着迷,BOOL *
。當然你的意思是BOOL
,如果你絕對需要需要一個布爾引用,那麼我建議你將初始/實際BOOL存儲在NSNumber中,並存儲任何你需要它的對象的引用(即你的NSMutableDictionary)。
爲什麼'-isSet'返回'BOOL *'而不是'BOOL'? – 2011-11-21 08:15:00