微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

更改SwiftUI OutlineGroup中的数据

如何解决更改SwiftUI OutlineGroup中的数据

我正在尝试使用新的SwiftUI OutlineGroup显示可扩展树。我在应用程序的ContentView中尝试过:

struct ContentView: View {

    @EnvironmentObject var store: MyDataStore

    var body: some View {
        List { 
            OutlineGroup(store.navRoot,children: \.children) { item in
                Text(item.name)
            }
        }
    }

商店的代码和试图更改树数据的命令处理程序:

// Clicking menu button calls this
private func newProject() {
    var new = LeftNavNode(id: UUID(),name: "Foo")
    store.navRoot.children!.append(new)        
}   

...

class MyDataStore: ObservableObject {
    @Published var navRoot = LeftNavNode(id: projectsID,name: "Projects",children: [
                                            LeftNavNode(id: UUID(),name: "Project1"),LeftNavNode(id: UUID(),name: "Project2")
                                            ])
}

struct LeftNavNode: Identifiable {
    let id: UUID
    let name: String
    var children: [LeftNavNode]? = nil
}

它可以显示静态数据,但是当我向树中添加时,出现错误。状态发生变化,视图重新渲染,我明白了:

2020-09-20 15:08:24.991604-0400 MyArchives [32728:584579] [常规] NSOutlineView错误插入子索引<_nscachedindexset> [索引数:1(在1个范围内),索引:(3 )]的父级0x0(有1个子级)。

如何在不崩溃的情况下更改树模型?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。