gpt4 book ai didi

swift - 可选值上 KeyPath 的奇怪错误

转载 作者:搜寻专家 更新时间:2023-10-31 22:17:21 25 4
gpt4 key购买 nike

考虑以下代码片段

class A {

var value: Int?

}

let a: A? = A()
let kp = \A.value
a?[keyPath: kp] = 10
print(a?.value)

这完美地工作并且 Optional(10) 按预期打印。在我的实际应用程序中,我试图以这种方式设置的字段被声明为 Date? 并且它会导致一些奇怪的错误。我实际应用的 MWE 是这样的:

class A {

var value: Date?

}

let a: A! = A()
let kp = \A.value
a?[keyPath: kp] = Date() // Line with error
print(a?.value)

但是编译器提示突出显示的行并说:

Value of optional type 'Date?' must be unwrapped to a value of type 'Date'

Fix: Coalesce using '??' to provide a default when the optional value contains 'nil'

Fix: Force-unwrap using '!' to abort execution if the optional value contains 'nil'

这是我们期望在最终版本之前修复的编译器错误,还是我对键路径不了解?

我正在使用 Xcode 11 beta 3,但我在 beta 2 中也遇到了同样的问题。如果它有用,实际代码是 here .

最佳答案

写这个没有!和 ?作品

let a = A()
let kp = \A.value
a[keyPath: kp] = Date()
print(a.value)

或仅作为可选

let a: A? = A()
let kp = \A.value
a?[keyPath: kp] = Date()
print(a?.value)

关于swift - 可选值上 KeyPath 的奇怪错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57141162/

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