【发布时间】:2018-07-20 05:04:40
【问题描述】:
如果我有
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
nameKeyPath 给我一个KeyPath,我以后不能用它来修改名称值,但是如果我强制打开它,我会得到一个ReferenceWritableKeyPath,这就是我想要的。
不幸的是,由于意外发现 nil,沿线使用带有 nil 值的 referencedNameKeyPath 预期会崩溃。
我的问题是有没有办法将 KeyPath 转换为 ReferenceWritableKeyPath 或以某种方式解开它?
【问题讨论】:
-
考虑尽可能使用非可选类型。一个类中的一个可选的不写初始化程序的不在场证明是一个非常坏的习惯????
-
不幸的是,在我的情况下这是不可能的