核心数据 - NSFetchRequestResult:结果中的一对多关系中的项目数?

Posted

技术标签:

【中文标题】核心数据 - NSFetchRequestResult:结果中的一对多关系中的项目数?【英文标题】:Core Data - NSFetchRequestResult: count of items in one-to-many relationship from result? 【发布时间】:2019-04-16 14:24:47 【问题描述】:

考虑一个包含两个实体的核心数据模型:TermDictionary 和 Term。 TermDictionary 有一个“name”属性和一个称为“terms”的一对多关系,它指向一组 Term 对象,每个对象都包含两个属性:“name”和“score”。

我有一个 NSFetchRequest 用作 UITableView 的数据源,它显示数据库中的所有 TermDictionaries。这个想法是,表格将为每个单元格显示字典的名称,以及该字典中术语的数量。

在以下代码 sn-p 中,item 包含 "TermDictionary" 实体的 NSFetchRequestResult:

let thisDict = item as! TermDictionary
cell.textLabel?.text = thisDict.name
cell.detailTextLabel?.text = "\(thisDict.terms?.count ?? 0) terms"

...表格单元格正确显示了术语词典的名称,但看起来thisDict.terms 总是为零,因此术语数标签始终显示为零。

我是否需要对 item 做一些特别的事情,而不仅仅是将其转换为我的 TermDictionary 托管对象子类?

【问题讨论】:

Hey DanM,这个特殊的 TermDictionary 项目似乎没有术语项目。试着理解为什么 TermDictionary 总是没有 term 关系。 【参考方案1】:

你不需要做任何特别的事情。如果thisDict.terms 打印为 nil,则它确实是 nil。检查您的数据存储。

【讨论】:

我确实检查过——Term 实体都在里面,但我不知道如何通过查看 SQLite 文件来确认关系... 原来是范围界定问题;当我在将条款添加到 TermDictionary 后运行 context.save() 时,上下文为零。哦。

以上是关于核心数据 - NSFetchRequestResult:结果中的一对多关系中的项目数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 MKMapView、核心位置和核心数据

大数据三大核心技术:拿数据、算数据、卖数据!

核心数据道模式

通过迁移将核心数据实体及其数据移动到新的核心数据模型文件中

核心数据与用于核心数据的单个 MOC 和主线程合并冲突

核心数据——数据故障