欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Swift4.0 --- setValuesForKeys() 赋值报错问题

程序员文章站 2024-02-20 15:03:46
...
使用Swift4.0,通过setValuesForKeys保存字典数据,无法存储 

代码如下

class Person : NSObject{
    
    var name :String = ""
    var age  :Int    = 0
    var height : Double = 0
    init(dict:[String : Any]){

        super.init()
        setValuesForKeys(dict)
    }

}


let p1 = Person(dict: ["name" : "why", "age" : 19, "height" : 1.8])


报错信息:

libc++abi.dylib: terminating with uncaught exception of type NSException


原因

在swift3中,编译器自动推断@objc,换句话说,它自动添加@objc 

在swift4中,编译器不再自动推断,你必须显式添加@objc

解决

class Person : NSObject{
    
   @objc var name :String = ""
   @objc var age  :Int    = 0
   @objc var height : Double = 0
    init(dict:[String : Any]){

        super.init()
        setValuesForKeys(dict)
    }

}


let p1 = Person(dict: ["name" : "why", "age" : 19, "height" : 1.8])



相关标签: swift4.0