iOS:“Invalid top-level type in JSON write”引起程式閃退

susie_cc發表於2019-03-28

下午交測開發的新功能,給測試演示的時候發現我負責的發帖頁面,在沒有新增關聯商品時發帖程式會閃退。會後我開始除錯bug,查詢原因,一個全域性斷點很容易就定位到了引起程式閃退的程式碼,原來是一個把字典轉轉換成字串的方法引起的。

//字典轉為Json字串
+ (NSString *)convertDictionaryToJsonString:(NSDictionary *)dic
{
    NSError *error = nil;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];
    return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
}
複製程式碼

錯誤log如下: [NSJSONSerialization dataWithJSONObject:options:error:]: Invalid top-level type in JSON write

而引起錯誤的原因是在沒有新增關聯商品時呼叫convertDictionaryToJsonString方法時引數傳入的是一個空字串,把字串當成了一個字典使用,而字串是無法轉換成json格式的,所以程式碼執行到NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&error];語句時,引起了應用閃退。

而出現這個bug的原因是後臺介面返回資料發生了變化,同事在沒有告知我的情況下幫我修改了程式碼,好吧,啥都不想不說了。。。 來記錄一下第一次遇到的這個bug.

相關文章