如何添加CoreData属性以用于FRC sectionNameKeypath值

时间:2016-12-22 23:53:10

标签: ios core-data swift3 nsfetchedresultscontroller

最近我被告知每个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值的实体应该驻留在哪个部分?

1 个答案:

答案 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将对应于节的编号。