xcode 泛型结构“ForEach”要求“Set< Exercise>”符合“随机访问集合”- SwiftUI

ijnw1ujt  于 2022-11-18  发布在  Swift
关注(0)|答案(1)|浏览(117)

我收到错误:尝试在另一个视图中显示从列表中选择得项目时,“泛型结构”ForEach“要求”Set“符合”RandomAccessCollection.“”

import SwiftUI

struct ExSetView: View {
    
    @Environment(\.managedObjectContext) var viewContext
    @Environment(\.dismiss) var dismiss
    @State var selectedItems = Set<Exercise>()
    
    var body: some View {
        NavigationView {
            VStack (alignment: .leading) {
                Text("Set Count: \(selectedItems.count)")
                ForEach(selectedItems) { e in
                    NavigationLink(
                        destination: ExSetInputView(exset: e),
                        label: {
                            Text(e.exercisename)
                        }
                    )}
            }
        }
    }
}

错误位于ForEach(selectedItems) { e in
我不知道如何解决这个问题。最后我只想通过exercisename属性将所选项目显示为导航链接。有没有其他不使用For Each的方法?这个问题是因为它是一个集合而不是数组吗?任何帮助都将不胜感激!!!

mbzjlibv

mbzjlibv1#

ForEach需要有序数据源,而Set根据定义是无序的。
一个简单的解决方案是对集合进行排序,例如按exercisename

ForEach(selectedItems.sorted{$0.exercisename < $1.exercisename})

sorted的结果是符合'RandomAccessCollection的数组。

相关问题