NSNull出場最多的時候是JSON解析。git
在OC中,NSDictionary和NSArray只能存儲對象,因此對於JSON可能存在的null,映射的是NSNULL,而且OC沒有強制類型檢查,能夠任意的向對象發送消息,這樣若是json反序列化出的字典或者數組有null的時候,就會崩潰。例如返回的json 取age字段 integerValue實現拿到age數字。但當age是空的時候,給一個null發送消息,就會野指針崩潰。json
OC的解決辦法通常是 每次發消息的時候都類型檢查,確保不空。或者添加NSNull的分類,讓它響應各類常見方法(integerValue)而且返回默認值。可是這兩種方法都不太好。數組
而在Swift中,由於強調類型安全。因此基本不會出現這種問題。安全
if let string = json as? String { print("json") }else { print("解析失敗") }
這時打印結果必定是解析失敗。框架
不過Swift由於類型判斷很嚴格,因此在類型轉換的時候也很複雜。可能要取很深層次的節點要寫無數個if let 和 as?強轉才行。spa
此時能夠從git上下載SwiftyJSON框架,這但是擁有上萬star的框架,完美的解決了冗餘的寫法,能夠直接json[""][""][0][""]的方法遊走於數組和字典中。大大的節約了時間。指針