SwiftUI 列表重复 children 取决于 macOS BigSur 中的开放组

SwiftUI list duplicates children depending on open groups in macOS BigSur

我遇到了 swiftui 列表没有正确显示项目的问题。

查看两张截图: 项目“Two”有 2 children:“SubitemOne”和“SubitemTwo”,当“SubitemOne”关闭时,第二个 child 复制第一级数组的最后一个元素。

如果我们打开“SubitemOne”,元素将正确呈现。

我创建了显示问题的示例项目 - https://github.com/kmalyshev/ListProblemExample

代码如下:

import SwiftUI

struct ContentView: View {
    
    let data = Item.getSampleData()
    
    var body: some View {
        NavigationView {
            
            VStack {
                List(data, id: \.id, children: \.children) { item in
                    Text(item.name)
                }
            }
        }
    }
}


struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

struct Item: Codable {
    
    let id: UUID
    let name: String
    let children: [Item]?
    
    init(id: UUID = UUID(), name: String, children: [Item]? = nil) {
        self.id = id
        self.name = name
        self.children = children
    }
    
    static func getSampleData() -> [Item] {
        
        [
            Item(name: "One"),
            Item(
                name: "Two",
                children: [
                    Item(
                        name: "SubitemOne",
                        children: [
                            Item(name: "LastOne"),
                            Item(name: "LastTwo"),
                        ]
                    ),
                    Item(name: "SubitemTwo"),
                ]
            ),
            Item(name: "Three"),
        ]
    }
    
}

我的 macOS 版本是 11.0.1。您知道任何解决方法吗?

问题已解决。我向 Apple 报告了这个错误。

https://feedbackassistant.apple.com/feedback/8955055

他们通过一些内部更新修复了它。