gpt4 book ai didi

ios - 可选值上的 Swift KeyPath

转载 作者:可可西里 更新时间:2023-11-01 00:33:26 25 4
gpt4 key购买 nike

如果我有

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,使用 referencedNameKeyPath 和 nil 值预计会崩溃。

我的问题是有没有办法将 KeyPath 转换为 ReferenceWritableKeyPath 或以某种方式解包它?

最佳答案

您还可以在键路径上使用可选链接。创建两个键路径,一个用于用户,另一个用于信息中的名称。

let infoKeyPath = \WrappedClass.user.info

let nameKeyPath = \Info.name

现在,使用带有 keypath 的可选链接,它会产生 String? 作为结果。

let name = wrappedInstance[keyPath: infoKeyPath]?[keyPath: nameKeyPath]

关于ios - 可选值上的 Swift KeyPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48705622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com