最近我被告知每个tableView应该只有一个FetchResultsController。我的表视图有2个部分,我需要以某种方式使用sectionNameKeyPath属性来告诉每个实体它们应该在哪个表视图部分。
我想要做的是把我的实体的一个属性的值加起来,如果它的正面放在第0部分,如果它是否定的,那么将它放在第1部分中。
在我有2个获取请求和2个FRC之前,其中一个看起来像这样
let fetchRequest: NSFetchRequest<Person> = Person.fetchRequest()
fetchRequest.predicate = NSPredicate(format:"statement.@sum.amountOwed >= 0")
let sort = NSSortDescriptor(key: #keyPath(Person.name), ascending: true)
fetchRequest.sortDescriptors = [sort]
positiveFetchedResultsController = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: coreDataStack.managedContext, sectionNameKeyPath: nil, cacheName: nil)
do{
try positiveFetchedResultsController.performFetch()
}catch let error as NSError{
print("Fetching error: \(error), \(error.userInfo)")
}
是否可以使用谓词的结果来告诉使用sectionNameKeyPath值的实体应该驻留在哪个部分?
答案 0 :(得分:0)
我认为你可以使用一个FetchResultsController。
let fetchRequest: NSFetchRequest<Person> = Person.fetchRequest()
let sortDescriptor1 = NSSortDescriptor(key: "section.no", ascending: true)
let sortDescriptor2 = NSSortDescriptor(key: "person.no", ascending: false)
fetchRequest.sortDescriptors = [sortDescriptor1, sortDescriptor2]
let aRowResults = NSFetchedResultsController(fetchRequest: fetchRequest, managedObjectContext: context, sectionNameKeyPath: "section.no", cacheName: nil)
在表格视图中,indexPath.section将对应于节的编号。