我只想知道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中,我们使用字符串作为下面给出的键,我们可以从中获益[/ p>]
[object valueForKey:@"name"]
我的问题是,编码级别或内存级别是否有任何好处?
答案 0 :(得分:3)
两个主要优点是:
密钥已验证::如果您尝试使用无效的密钥,Xcode会在编译时警告您。
结果是强类型的:使用以下内容,编译器将知道结果name
是String
:
let name = student[keyPath: nameKey]
这消除了进行任何强制转换的必要。
结果是编写安全代码要容易得多。