swift - 从一个属性中提取价值到另一个属性中
问题描述
我将我的@ObservableObject 传递给子视图。由于并非每个子组件都需要来自@ObservableObject 的所有值,因此我想将某些值提取到变量中,然后将这些值用于向用户显示 UI。
想象一下我有一个数据类。
class Data: ObservableObject {
@Published var imageName: String
@Published var label: String
@Published var value: String
init(imageName: String, label: String, value: String) {
self.imageName = imageName
self.label = label
self.value = value
}
}
现在,这就是我想要实现的目标:
struct SubView: View {
@ObservedObject var data: Data
@State var foo = data.value
var body: some View {
ZStack {
Text(foo)
}
}
}
每当我尝试这样做时,编译器都会抱怨以下内容:
不能在属性初始化器中使用实例成员“数据”;属性初始化程序在“自我”可用之前运行
我需要 foo 属性来拥有@State,因为它应该是一个需要倒数到零的值。有没有办法可以绕过这个并且仍然使用该值来倒计时?
解决方案
要访问该值,只需使用data.value
. 您的视图代码将如下所示:
struct SubView: View {
@ObservedObject var data: Data
var body: some View {
ZStack {
Text(data.value)
}
}
}
但是,如果您需要获取 的Binding
值data.value
,您可以使用$data.value
. 例子:
TextField("Data value", text: $data.value)
推荐阅读
- php - php - 只有来自 api 请求的最后一个结果
- python - 将具有字典值的系列值转换为 DataFrame。不是系列本身
- java - Java中的异构数组类型转换
- angular - 如何使用 Angular Meterial Design 创建 changelog 手风琴
- html - 如何在 Swagger UI 的标记内插入少量自定义?
- mysql - MySQL:下拉列表显示的值与发送的值不同
- java - 唯一索引或主键冲突 Hibernate
- reactjs - React - 带有动态更新父状态的输入的表。逻辑问题
- android - 微调器模式下的 TimePickerDialog
- c# - 如何在 .NET 中对服务的工作负载进行负载平衡