swift - 使用@EnvironmentObject 我得到:“不能分配给属性:'viewModel' 是一个只能获取的属性”
问题描述
我得到错误
无法分配给属性:“viewModel”是仅获取属性尝试使用泛型类型的@EnvironmentObject 时。
import SwiftUI
import Combine
protocol HasCount {
var count: Int { get set }
var countPublished: Published<Int> { get set }
var countPublisher: Published<Int>.Publisher { get set }
}
struct SomeView<ViewModelType: ObservableObject & HasCount>: View {
@EnvironmentObject var viewModel: ViewModelType
var body: some View {
return VStack {
Text("text")
.onAppear {
self.viewModel.count = 1
}
}
}
}
知道如何解决这个问题吗?
解决方案
您的HasCount
协议必须仅限于以下对象
protocol HasCount: AnyObject { // << here !
var count: Int { get set }
var countPublished: Published<Int> { get set }
var countPublisher: Published<Int>.Publisher { get set }
}
推荐阅读
- nginx-reverse-proxy - 通过 nginx 暴露多个 docker 服务
- maven - 需要从 mvn 生成的插件中删除“由 maven-plugin-tools 3.5 于 2021-01-20 生成”文本
- c# - 如何在 Windows 和 Linux 上正确存储 .NET Core 非交互式应用程序凭据?
- android - startActivityForResult putExtras being recieved as NULL
- google-sheets - 在 Google 表格中使用数组公式
- visual-studio - 制作 .dll 文件时,如何在 Visual Studio 中访问不同形式的可变形式
- java - 按钮数量达到一定值后如何增加按钮的值?
- javascript - 如何从车把数据中运行脚本
- python - 如何创建具有从 csv 文件中的列表收集的唯一名称值的类的多个对象
- pandas - 使用 Visions 自动检测安全标识符列