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

时间:2016-01-19 07:01:09

标签: ios database swift core-data

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

| id   | gender|  
|------|-------|  
| 0001 | Male  |  
| 0002 | Male  |  
| 0003 | Female|  
| 0004 | Female|

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

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

我知道我可以对此表示同意:

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

问题是:我还希望同时获得每个ID的性别。

我可以吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用“id”作为sectionNameKeyPath,您将为每个唯一ID分配一个单独的部分,将具有相同ID的所有实例分组到一个组中。由于id可能是唯一的,这意味着每个组都将是一个记录。除了为唯一字段进行分组,只需为sectionNameKeyPath指定内容,通常最好只指定nil

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

或者,您可以使用FetchedResultsController的yth属性获取所有独立于部分的记录:xth