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