我遇到了NSFetchedResultsController
sortDescriptor的问题。我有一个To-Many关系,我想用作sortDescriptor。我的问题是这些数据是NSSet
。我怎样才能在sortDescriptor中使用它?当我跑它时,我得到了:
"因未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:' to-many key不允许在此处'" 错误。
基本上我有一个DEVICE实体和一个TEST实体。我想使用TEST实体中的最新日期对设备进行排序。从使用谷歌这方面缺乏资源来判断,我开始怀疑它是否可能?如果不是最简单的解决方法是什么?
func fetchByFloor(){
let fetch = NSFetchRequest(entityName: "Device")
let sort = NSSortDescriptor(key: "estMessageFloor", ascending: false)
let sortTested = NSSortDescriptor(key: "latestTestDate", ascending: true)
let sortAddress = NSSortDescriptor(key: "estAddress", ascending: true)
let sortChanged = NSSortDescriptor(key: "deviceWasEdited", ascending: true)
fetch.sortDescriptors = [sort,sortTested, sortAddress]
fetch.fetchBatchSize = 20
let controller = NSFetchedResultsController(fetchRequest: fetch, managedObjectContext: ad.managedObjectContext, sectionNameKeyPath: "estMessageFloor", cacheName: nil)
controller.fetchRequest.predicate = devicePredicate
controller.delegate = self
fetchedResultsController = controller
navigationItem.title = "Building: \(currentBuilding)"
}
答案 0 :(得分:1)
对我的问题不是一个真实的答案,但我实施的一项工作现在正在运作:
我在我的DEVICE实体中为NSSet
添加了另一个属性。每当此设备添加TEST实体时,我运行一个函数来对latestTestDate
进行排序并返回第一个。然后我将第一个结果保存为{{1}}。然后我在我的排序描述符中使用它来保持秩序。似乎可能是一种完成任务的钻井工作方式,但是如果找不到更好的解决方案,那么现在这似乎可以完成......