關(guān)于NSDictionary初始化

方法1:[NSDictionary dictionaryWithObjectsAndKeys:<#(id), ...#>, nil]

方法2:NSDictionary *dic = ?@{@"key":value}

坑在哪里?

坑就在第二種初始化方法?NSDictionary *dic = @{@"key":value}

如果你的value是為nil必將引發(fā)崩潰:

'NSInvalidArgumentException', reason: '*** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]

意思就是說(shuō)使用[__NSPlaceholderDictionary initWithObjects:forKeys:count:]這個(gè)初始化方法,發(fā)現(xiàn)keys count和objcects的個(gè)數(shù)不匹配了

如何規(guī)避?

在使用@{@”key”:value}這種方式初始化的時(shí)候,一定要對(duì)value做是否為nil的判斷,為nil就不要加入Dictionary

使用標(biāo)準(zhǔn)的初始化方法:

NSDictionary dictionaryWithObjectsAndKeys:value1,@"v1",value2,@"v2",value3,@"v3", nil];

或其它的幾個(gè)初始化方法進(jìn)行初始化,這樣如果value為nil就不會(huì)加入字典,使用objectForKey:取出來(lái)的對(duì)象就會(huì)為nil對(duì)象,不會(huì)引發(fā)崩潰。

關(guān)聯(lián):

使用@[]方法初始化NSArray也有此坑,規(guī)避方法同字典一樣

總結(jié):寫(xiě)下來(lái),?以后記得避免。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容