Ios 在SwiftUI的列表视图中使用可识别的对象集

Ios 在SwiftUI的列表视图中使用可识别的对象集,ios,swift,list,swiftui,Ios,Swift,List,Swiftui,我有一个由DataCore处理的数据库。我试图检索任何“赋值”对象并将其插入视图列表。分配类本身是可识别的,但我在尝试在视图中创建列表时出错: Initializer 'init(_:id:rowContent:)' requires that 'Set<NSManagedObject>' conform to 'RandomAccessCollection' 这是作业课: import Foundation import CoreData extension Assignme

我有一个由DataCore处理的数据库。我试图检索任何“赋值”对象并将其插入视图列表。分配类本身是可识别的,但我在尝试在视图中创建列表时出错:

Initializer 'init(_:id:rowContent:)' requires that 'Set<NSManagedObject>' conform to 'RandomAccessCollection'
这是作业课:

import Foundation
import CoreData


extension Assignment: Identifiable {

@nonobjc public class func fetchRequest() -> NSFetchRequest<Assignment> {
    return NSFetchRequest<Assignment>(entityName: "Assignment")
}

@NSManaged public var id: UUID?
@NSManaged public var assignmentName: String?
@NSManaged public var notes: String?


}
<代码>导入基础 导入CoreData 扩展分配:可识别{ @nonobjc公共类func fetchRequest()->NSFetchRequest{ 返回NSFetchRequest(entityName:“分配”) } @NSManaged公共变量id:UUID? @NSManaged公共var assignmentName:字符串? @NSManaged公共var注释:字符串? } 这是使用绑定连接到视图的ViewModel:

class AssignmentViewModel : ObservableObject
{



 private var assignmentModel = AssignmentModel() 

/*AssignmentModel is a different class, we assume all methods working correctly and it's not a part of the question.*/



@Published var allAssignments : Set<Assignment>



 init()
 {
        allAssignments=[]

 }


func retrieveAllAssignment()
{
    
    allAssignments=assignmentModel.retrieveAllAssignments()
    
}

}
class AssignmentViewModel:ObservableObject
{
私有var assignmentModel=assignmentModel()
/*AssignmentModel是一个不同的类,我们假设所有方法都正常工作,它不是问题的一部分*/
@已发布变量allAssignments:Set
init()
{
allAssignments=[]
}
func retrieveAllAssignment()函数
{
allAssignments=assignmentModel.retrieveAllAssignments()
}
}
尝试以下操作

List(Array(assignmentViewModel.allAssignments), id: \.self) { assignment in

                 

成功了,谢谢。你能解释一下这个问题吗?为什么它没有按照我设置的方式工作?
List
需要数据作为RandomAccessCollection,但是set是一种HashedCollection,数组是一种collection,所以我们只需要从set创建数组来满足接口要求。
List(Array(assignmentViewModel.allAssignments), id: \.self) { assignment in