Swift 4中键值编码的优势

Swift 4中键值编码的优势,swift,swift4,Swift,Swift4,我只想知道Swift 4中键值编码的好处。因为我非常了解键值编码(保留对属性的引用,而不实际访问属性所保留的基础数据) 例如: struct Student { var name: String? var rollNo: String? } let student = Student(name: "aman", rollNo: "12121") let nameKey = \Student.name let name = student[keyPath: nameKey] 在

我只想知道Swift 4中键值编码的好处。因为我非常了解键值编码(保留对属性的引用,而不实际访问属性所保留的基础数据)

例如:

struct Student {
    var name: String?
    var rollNo: String?
}

let student = Student(name: "aman", rollNo: "12121")
let nameKey = \Student.name
let name = student[keyPath: nameKey]
在这里,我们创建了Student的实例,并通过下标(keyPath)访问该值,但我可以通过编写代码
Student.name
轻松访问该值

在Objective-C中,我们使用字符串作为键,如下所示,我们可以从中获得一些好处

 [object valueForKey:@"name"]

我的问题是,编码级别或内存级别有什么好处吗?

两个关键优势是:

  • 密钥已验证:Xcode将在编译时警告您尝试使用无效密钥

  • 结果是强类型的:通过以下操作,编译器将知道生成的
    名称
    是一个
    字符串

    let name = student[keyPath: nameKey]
    
    这样就无需进行任何铸造


  • 结果是,编写安全代码要容易得多

    请看一看Swift 4中键值编码更改/改进背后的动机。与其使用简单的字符串文字引用对象键,不如使用键路径强制执行编译时检查,以确保类型包含所需的键,从而消除常见类型的运行时错误。请阅读