我将@MainActor与视图模型类一起使用,如下面的代码所示,当我试图为模型添加环境键时,出现以下错误:“在同步非隔离上下文中调用主执行元隔离的初始值设定项”init()“”,并且代码在我从类中删除@MainActor之前不会编译。是否可以对同一个类同时使用@MainActor和EnvironmentKey。
视图模型类:
extension HomeView {
@MainActor
internal final class ViewModel: ObservableObject {
// More code here...
}
}
视图模型的EnvironmentKey:
struct HomeViewModelKey: EnvironmentKey {
static var defaultValue = HomeView.ViewModel()
}
extension EnvironmentValues {
var homeViewModel: HomeView.ViewModel {
get { self[HomeViewModelKey.self] }
set { self[HomeViewModelKey.self] = newValue }
}
}
1条答案
按热度按时间e3bfsja21#
你可以使用
.environmentObject(Store.shared)
作为你的store对象,它将模型结构加载到@Published
属性中。通常它是一个.shared
单例,另一个单例用于预览.preview
。