swift @可观察的初始值与类

yptwkmov  于 2023-06-21  发布在  Swift
关注(0)|答案(1)|浏览(96)

ObservableObject转换到@Observable宏,需要初始值,但从init初始化失败:

@Observable final class ViewModel {
    var foo: Foo // ❌ @Observable requires property 'foo' to have an initial value (from macro 'Observable')

    init(foo: Foo) {
        self.foo = foo
    }
}

宏似乎需要初始化两次(初始值将立即被丢弃)。是否有一个合理的解决方案,使用视图模型的类?

wwwo4jvm

wwwo4jvm1#

这实际上是语言本身的限制。SE-0400演进提案旨在解决这个确切的问题。
该解决方案已经在Swift工具链的main分支上实现,该分支位于实验性功能标志InitAccessors后面,因此如果您想尝试使用它,可以切换到工具链的main分支版本并启用此功能标志。
不幸的是,在没有接受和发布建议的编译器更改的情况下,似乎没有解决这个问题的方法。

相关问题