And*_*rew 4 ios swift swift4 swift5
如果我有
class Info {
var name: String?
}
class User {
var info: Info?
}
class WrappedClass {
var user: User = User()
}
let nameKeyPath = \WrappedClass.user.info?.name //Gets me KeyPath
let referencedNameKeyPath = \WrappedClass.user.info!.name //Gets me ReferenceWritableKeyPath
Run Code Online (Sandbox Code Playgroud)
nameKeyPath给我一个KeyPath我以后不能用来修改名称值的,但是如果我强制解开它,我会得到一个ReferenceWritableKeyPath我想要的。
不幸的是referencedNameKeyPath,由于意外发现 nil,沿线使用nil 值预计会崩溃。
我的问题是有没有办法将 a 转换KeyPath为 aReferenceWritableKeyPath或以某种方式解开它?
您还可以在关键路径上使用可选链接。创建两个键路径,一个用于用户,另一个用于信息中的名称。
let infoKeyPath = \WrappedClass.user.info
let nameKeyPath = \Info.name
Run Code Online (Sandbox Code Playgroud)
现在,使用带有键路径的可选链接,它会产生字符串吗?作为结果。
let name = wrappedInstance[keyPath: infoKeyPath]?[keyPath: nameKeyPath]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2746 次 |
| 最近记录: |