从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
}
}
宏似乎需要初始化两次(初始值将立即被丢弃)。是否有一个合理的解决方案,使用视图模型的类?
1条答案
按热度按时间wwwo4jvm1#
这实际上是语言本身的限制。SE-0400演进提案旨在解决这个确切的问题。
该解决方案已经在Swift工具链的
main
分支上实现,该分支位于实验性功能标志InitAccessors
后面,因此如果您想尝试使用它,可以切换到工具链的main
分支版本并启用此功能标志。不幸的是,在没有接受和发布建议的编译器更改的情况下,似乎没有解决这个问题的方法。