開始感謝JSONModel的開源,其成為了項(xiàng)目開發(fā)必備的開源庫。
我在網(wǎng)絡(luò)層中使用了瘦model的思想,業(yè)務(wù)層與網(wǎng)路層交互的全都是繼承自JSONModel 的model。
在開發(fā)過程中遇到了很多錯(cuò)誤,再此空暇之際總結(jié),方便以后查找。

以上圖model為例。
1.[__NSCFDictionary name]: unrecognized selector sent to instance
這種情況是:NSArray<WJPerson> * data;寫成了NSArray<WJPeson> * data;尖括號(hào)中為協(xié)議,不是指針。JSONModel利用協(xié)議這一特性,在解析的時(shí)候獲得需要將數(shù)據(jù)轉(zhuǎn)化的類型,這由JSONModel實(shí)現(xiàn),不是oc的泛型。
2.Terminating app due to uncaught exception 'Bad property protocol declaration', reason: '<XCBCarPlaceModel> is not allowed JSONModel property protocol, and not a JSONModel class.*
這種情況是沒有XCBCarPlaceModel類的實(shí)現(xiàn)。
@implementation XCBCarPlaceModel
@end
3.** Invalid JSON data. Required JSON keys are missing from the input. Check the error user information.**
這是model里面的數(shù)組,默認(rèn)是必需的,要是返回回來的model沒有包含此字段就會(huì)造成解析失敗。
4.toJSONString 方法,當(dāng)model的屬性為nil為其被Optional修飾,那么得到的此字符串就沒有該屬性,如果nil為requerid那么就是該屬性其值為null.