我有一个结构,它是数据集的一部分,如下所示:
var exercise: [Exercise]
struct Exercise: Codable {
var id = UUID()
var exercise, set: Int
}
字符串
在我的代码(View1
)中,我循环遍历exercise数组并到达每个元素,如下所示:
ForEach(exercise, id: \.id){ item in
NavigationLink( destination: NextView(arrayItem: item)){
Text("\(item.exercise)")
}
}
型
因此,我要发送给NextView
的item
必须类似于Exercise(id: E21, exercise: 227, set: 1)
在NextView
中,我不知道如何定义这个绑定变量。我试过这个:
struct NextView: View {
@Binding var arrayItem: Exercise
}
型
上面的变量(arrayItem
)与我在View1
中设置的项不匹配。你知道arrayItem
必须是什么样的才能接受item
值吗?
这是我得到的错误:
'NextView.Type'不可转换为'(Binding,Binding,Int)-> NextView'
1条答案
按热度按时间ctrmrzij1#
其中一个解决方案是使用
@ObservableObject
并使您的exercises
列表为@Published
。首先,你需要一些类来存储你的练习:
字符串
在NavigationLink中,您可以传递所选项目的绑定-您可以这样做,因为您现在可以 * 观察 *
ViewModel
。型
在
NextView
中,您可以根据需要使用@Binding
变量(我尝试修改exercise.exercise
值:型
最后,您的模型需要符合
Equatable
-没有它您不能使用firstIndex(of:)
:型