NSDictionary初始化的坑

由于今天在NSDictionary初始化的時候跳坑,出現(xiàn)哎破破Crash,故寫此博客和大家分享下如何跳坑

NSDictionary初始化

Objective-C中,NSDictionary初始化的方法有很多種

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

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

坑在哪里?

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

它到底是如何坑的呢?

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

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

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

如何規(guī)避?

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

使用標準的初始化方法:

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

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

關聯(lián):

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

總結:

看過此坑的童鞋,以后記得避免。

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容