YYModel
YYModel copied to clipboard
iOS 11 swift 4 字典转模型无效
guard let userModelDict = response?.data[UserInfoKey] as? [AnyHashable: Any] else { return } let userModel = QJUserModel.yy_model(with: userModelDict)
userModelDict 是一个有值的字典,userModel是空。 在swift 3的时候没问题,但是swift 4就是空。
+1
+1
+1 看来只能暂时转回swift3.0了
变量var前加上 @objc 就行了,modelContainerPropertyGenericClass 之类的方法前面也要加,升了swift4以后_YYModelMeta中的_keyMappedCount获取不到不带@objc的变量,所以_keyMappedCount一直是0,转出来的model当然是nil
Swift 4 里面 继承NSObject 不再默认在变量前 添加@objc 所以你需要做的是 在变量前加@objc 即可
+1 ["name":"小猪","age":12,"sex":"男"]的age解析不出, 希望大神能够改进
let model = NDTopUsers.model(withJSON: responseObject as AnyObject)
这是我的解析方式 你们看下行不行
在build setting -> swift 3 @objc inference -> on 然后在swift4里面就可以使用了。不过会出警告,还是需要自己加上@objc
模型的变量前加 @objc
swift4改变了默认策略,objc类中的属性默认不再添加@objc,如果纯swift的话还是换库吧,用用swift4的Codable也好。
有模型嵌套的一定要记得在 modelContainerPropertyGenericClass前面加 @objc
最终我把所有属性、modelContainerPropertyGenericClass、modelCustomPropertyMapper前面都加了@objc,并且build setting -> swift 3 @objc inference -> on。解决了问题,可能吧?
@chuqingr 谢谢.