問題現象
但是幾個項目下來一直遇到一個坑爹的問題,程序在獲取某些數據之後莫名崩潰。其實很早就發現了原因:由於服務器的數據庫中有些字段為空,然後以Json形式返回給客戶端時就會出現這樣的數據:
通過JsonKit 這個第三方庫解析出來的數據就成了
這個數據類型不是nil 也不是 String。 解析成對象之後,如果直接向這個對象發送消息(eg:length,count 等等)就會直接崩潰。提示錯誤為:
解決方法,其實一直沒有找到完美的解決辦法,坑了我很久。
1、最開始的解決方法就是為了應付當前遇到的崩潰,看看哪個字段可能為空,那麼就對該字段使用前進行判斷,通過崩潰時的錯誤提示可以看出,這樣的字段解析成的對象是 NSNull 類型的,所以可以直接判斷是不是此類型:
因為字段實在太多,就找一個補一個。
2、後來想徹底解決這問題,就打算從數據源下手,其實應該可以用正則表達式匹配這個null ,然後進行替換,奈何正則是我的硬傷啊。於是就相出了一個山寨方法:字符串匹配。在獲取到服務器返回的Json時,返回結果時string對象,於是就先替換 null 為 為空字符””,然後再解析。
這個方法本