我有两个实体:EntityA
和(< - >>)EntityB
我正在尝试获取按EntityA
EntityB.displayOrder
let request: NSFetchRequest<EntityA> = EntityA.fetchRequest()
context.perform {
do{
var data = try self.context.fetch(request)
let sort = NSSortDescriptor(key: "displayOrder", ascending: true)
for (index,dat) in data.enumerated() {
let entitiesB = (dat.entitiesB?.sortedArray(using: [sort]))
data[index].entitiesB! = NSSet(array: entitiesB!)
}
self.testListTableVC.testData2 = data
self.testListTableVC.tableView.reloadData()
}
}
}
排序似乎有效,但在将其设置回data
时,它没有排序..
答案 0 :(得分:0)
您正在排序entitiesB
,然后将data[index].entitiesB
设置为entitiesB
,并将其设为NSSet
。如果您在docs中了解了NSSet
s,则会看到它们不是排序列表。
你基本上做了多余的工作,因为你正在对这个数组进行排序,然后将其作为未排序的NSSet
我不知道您的模型设置如何,但您的data
属性看起来需要testListTableVC.testData2
。似乎任何类型的数组data
都有,它有一个名为entitiesB
的属性,它是NSSet
。我建议你这样做,以便你可以使用Swift数组,这将保持井井有条。