iOS Crash: KVC鍵值編碼

前言

最近項目中因為數據問題,導致了KVC由字典轉數據model時產生了崩潰,原因是后臺返回的數據中存在key對應的value為空,導致了重寫的setNilValueForKey方法拋出異常。

模擬Crash

{ 
    name =  null;
    age = 24;
}

在OC中模擬的話可以將value設置為[NSNull null];
調用setValuesForKeysWithDictionary修改Model中對應key的屬性,將字典類型數據轉化為model。此時如果model類中未重寫setNilValueForKey方法系統將拋出以下類似錯誤:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '[<People 0x100200080> setNilValueForKey]: could not set nil as the value for the key name.' 

所以我們需要再model類中重寫setNilValueForKey方法,為value為空的key設置默認值,也可以不做處理。

我們定義的model中已經重寫了setNilValueForKey方法,但多寫了一句話:調用了父類的這個方法:[super setNilValueForKey:key],同樣引起了Craash??????

- (void)setNilValueForKey:(NSString *)key
{
    [super setNilValueForKey:key];
}

刪除[super setNilValueForKey:key]就可以正常運行了,這個問題隱藏了好久,疏忽了??

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容