Swift 4 中键值编码的优势
Advantage of Key-Value Coding in Swift 4
我只想知道 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 将在编译时警告您,如果您尝试使用无效的密钥。
结果是强类型的: 通过以下,编译器将知道结果 name
是一个 String
:
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 将在编译时警告您,如果您尝试使用无效的密钥。
结果是强类型的: 通过以下,编译器将知道结果
name
是一个String
:let name = student[keyPath: nameKey]
这消除了进行任何转换的需要。
结果是编写安全代码要容易得多。