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 (将#修改为@)