如何添加核心数据属性以用于 FRC sectionName Keypath 值
Posted
技术标签:
【中文标题】如何添加核心数据属性以用于 FRC sectionName Keypath 值【英文标题】:How do add up an CoreData attribute to use for a FRC sectionNameKeypath value 【发布时间】:2016-12-22 23:53:10 【问题描述】:最近有人告诉我,每个 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】:我认为你可以使用一个 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 将对应于节的编号。
【讨论】:
属性(amountOwed)的计算在哪里起作用,所以我知道Person应该放在哪个部分? 为什么不添加新属性?如果(amountOwed>0),.no=0。 if (amountOwed以上是关于如何添加核心数据属性以用于 FRC sectionName Keypath 值的主要内容,如果未能解决你的问题,请参考以下文章
如何在重新进入查看时转储 Core Data 搜索结果 FRC?