我正在将SwiftUI与Coredata一起使用以显示一对多关系数据元素。
示例:
一个Group
有很多Book
。
我有两个视图,GroupView
有很多GroupRowView
。
struct GroupView: View {
var groups: FetchedResults<Group>
var body: some View {
ScrollView(.horizontal) {
HStack(alignment: .center, spacing: 32, content: {
ForEach(contractGroups) { group in
HStack {
GroupRowView(group: group)
Text(String(group.books?.count ?? 0)) // display correct
.foregroundColor(Color.red)
}
}
})
}
}
}
和 GroupRowView 在这里:
struct GroupRowView: View {
var group: Group
var body: some View {
ZStack {
Color(.white)
VStack {
Text(group.name!)
.foregroundColor(Color.white)
.font(.system(size: 17, weight: .bold, design: .default))
Text(String(group.books?.count ?? 0)) //display wrong
.foregroundColor(Color.white)
}
}.frame(width: 120, height: 100, alignment: .center)
}
}
每次更新books
时,帐面数量都会正确显示在GroupView
中,但不会正确显示在GroupRowView
中。
group
中的forEach
是FetchedResults<ContractGroup>.Element
,是不是与var group: ContractGroup
中的GroupRowView
不同的原因吗?
如何使group.books
中的GroupRowView
进行更改?
谢谢!
答案 0 :(得分:1)
您需要明确观察group
行,例如
struct GroupRowView: View {
@ObservedObject var group: Group
// ... other code