YYModel icon indicating copy to clipboard operation
YYModel copied to clipboard

iOS 11 swift 4 字典转模型无效

Open edsum opened this issue 8 years ago • 13 comments

guard let userModelDict = response?.data[UserInfoKey] as? [AnyHashable: Any] else { return } let userModel = QJUserModel.yy_model(with: userModelDict)

userModelDict 是一个有值的字典,userModel是空。 在swift 3的时候没问题,但是swift 4就是空。

edsum avatar Sep 25 '17 10:09 edsum

+1

Chrisbooty avatar Sep 27 '17 09:09 Chrisbooty

+1

lidajun avatar Sep 27 '17 09:09 lidajun

+1 看来只能暂时转回swift3.0了

Initial-C avatar Oct 09 '17 07:10 Initial-C

变量var前加上 @objc 就行了,modelContainerPropertyGenericClass 之类的方法前面也要加,升了swift4以后_YYModelMeta中的_keyMappedCount获取不到不带@objc的变量,所以_keyMappedCount一直是0,转出来的model当然是nil

chuqingr avatar Oct 10 '17 09:10 chuqingr

Swift 4 里面 继承NSObject 不再默认在变量前 添加@objc 所以你需要做的是 在变量前加@objc 即可

Yu2erer avatar Oct 11 '17 10:10 Yu2erer

+1 ["name":"小猪","age":12,"sex":"男"]的age解析不出, 希望大神能够改进

LJjack avatar Oct 16 '17 10:10 LJjack

let model = NDTopUsers.model(withJSON: responseObject as AnyObject)

这是我的解析方式 你们看下行不行

NorthDogLi avatar Oct 24 '17 07:10 NorthDogLi

在build setting -> swift 3 @objc inference -> on 然后在swift4里面就可以使用了。不过会出警告,还是需要自己加上@objc

cillyfly avatar Oct 25 '17 02:10 cillyfly

模型的变量前加 @objc

bigFishZhang avatar Oct 31 '17 06:10 bigFishZhang

swift4改变了默认策略,objc类中的属性默认不再添加@objc,如果纯swift的话还是换库吧,用用swift4的Codable也好。

iOSleep avatar Nov 01 '17 10:11 iOSleep

有模型嵌套的一定要记得在 modelContainerPropertyGenericClass前面加 @objc

bigFishZhang avatar Nov 06 '17 02:11 bigFishZhang

最终我把所有属性、modelContainerPropertyGenericClass、modelCustomPropertyMapper前面都加了@objc,并且build setting -> swift 3 @objc inference -> on。解决了问题,可能吧?

6ag avatar Nov 23 '17 06:11 6ag

@chuqingr 谢谢.

Adrift001 avatar May 17 '19 13:05 Adrift001