1. 程式人生 > >swift4.0 YYModel進行陣列轉模型時, 轉換的資料為nil

swift4.0 YYModel進行陣列轉模型時, 轉換的資料為nil

在進行陣列轉模型的操作時,資料轉化後為空,
換成使用oc建立的模型類之後,可以進行互轉,
Swift 4 裡面繼承NSObject 不再預設在變數前 新增@objc;
YYModelMeta中的_keyMappedCount獲取不到不帶@objc的變數,所以_keyMappedCount一直是0,轉出來的model 也就是 nil;

使用YYModel 實現巢狀的字典轉模型時,如果返回資料中,包含陣列,就需要實現 modelContainerPropertyGenericClass 方法。
原因:陣列用 OC 執行時,因為陣列中儲存的是 id 型別的,所以判斷不出來,如果是自定義物件,執行時可以判斷出來,所以 YYModel 可以根據物件的類,將這個物件例項化出來。
使用 yymodel字典轉模型的時候,出現了3個問題:
1、fatal error: NSArray element failed to match the Swift Array Element type
2、一直崩潰在 yymodel 的 initWithMethod 方法中的unsigned int argumentCount = method_getNumberOfArguments(method);這一句,錯誤提示是:EXC_BAD_ACCESS(code=1,address=0x0)
3、字典中有值,但是字典轉模型之後,模型中沒有值

解決方法:
1、在模型的每一個屬性 var 前加上 @objc
2、如果有 modelContainerPropertyGenericClass 方法,在這個方法前面也要加 @objc
3、在build setting -> swift 3 @objc inference -> on 然後在swift4裡面就可以使用了。不過會出警告,還是需要自己加上@objc