如何(我可以)从 NSFetchedResultsController 获取其他部分的内容?

Posted

技术标签:

【中文标题】如何(我可以)从 NSFetchedResultsController 获取其他部分的内容?【英文标题】:How to(Can I) get the content of other section from a NSFetchedResultsController? 【发布时间】:2016-01-19 07:01:08 【问题描述】:

假设我有一个这样的数据库表:

|编号 |性别| |--------|--------| | 0001 |男 | | 0002 |男 | | 0003 |女| | 0004 |女|

我使用带有“id”作为 NameKeyPath 的 NSFetchedResultsController 来获取四个部分:

var fetchedID = NSFetchedResultsController(fetchRequest: fetchRequest, 
    managedObjectContext: managedContext,
    sectionNameKeyPath: "id", cacheName: nil)
do 
    try fetchedDay.performFetch()
 catch 
    fatalError("Failure to save context: \(error)")

我知道我可以通过这个获得 id:

var ID = fetchedID.sections![0].name

问题是:我也想同时获取每个id的性别。

我可以吗?

非常感谢!

【问题讨论】:

【参考方案1】:

使用“id”作为sectionNameKeyPath 将为每个唯一ID 单独设置一个部分,将具有相同ID 的所有实例分组到一个组中。由于 id 可能是唯一的,这意味着每个组将是一条记录。与其在一个唯一的字段上分组,只是为sectionNameKeyPath 指定一些东西,通常最好只指定nil

在每个部分中,您将获得完整记录,因此您可以使用fetchedID.sections![n] 返回nth 部分,并可以使用fetchedID.sections![x].objects![y] 获取单个记录以获取@ 中的yth 对象987654328@部分。

或者,您可以使用 FetchedResultsController 的 fetchedObjects 属性获取所有记录,独立于部分:fetchedID.fetchedObjects[n]

【讨论】:

以上是关于如何(我可以)从 NSFetchedResultsController 获取其他部分的内容?的主要内容,如果未能解决你的问题,请参考以下文章

核心数据难题:不能两次调用 NSFetchedResults

Array 变化时自动更新 UITableView

合并“NSManagedObjectContextDidSaveNotification”后,NSFetchedResultsController 未显示所有结果

使用 Core Data 在 Swift 3 中保存和检索 MKAnnotations

iOS - 将单元格添加到带有核心数据和 NSFetchedResultsController 的空 UITableView 部分

使用没有搜索栏的获取结果控制器过滤表视图?