如何解决SwiftUI:通过更改核心数据关系数组来更新视图
我有一个 SwiftUI 视图,其中传入了一个核心数据 NSManagedObject(没有 @FetchRequest),并且子视图需要显示来自第一个实体的一对多关系。在本例中,传入的是 Person
,我想显示与该 Person 关联的 Tags
。
struct CJMapsCalloutView: View {
@ObservedObject var personAddress: PersonAddress
var body: some View {
VStack(alignment: .leading,spacing: 8.0) {
if let personTags = personAddress.person?.getSortedListOfAssignedTags() {
ContactTagsList(personTags: personTags)
}
}
}
ContactTagsList
struct ContactTagsList: View {
@State var personTags: [Tag]
var body: some View {
HStack(spacing: 0.0) {
ForEach(personTags) { (tag: Tag) in
ContactTag(personTag: tag)
}
.padding(.leading,0).padding(.trailing,2)
}
}
使用 @State
时,它可以很好地显示标签列表,甚至对单个 Tags
的更改也会自动反映在视图中。但对“关系”的任何更改,无论是在 Person
中添加或删除标签,都不会导致视图更新。
我尝试对 @ObservedObject
使用 @State
而不是 var personTags
,但这会在编译时出现错误:
属性类型“[Tag]”与“wrappedValue”的属性类型不匹配 其包装类型“ObservedObject”的属性
我是 SwiftUI 的新手,所以我不确定使用 @ObservedObject 有什么问题。如果我不能使用它,那么处理这种情况以自动更新关系的最佳方法是什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。