核心数据 - 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:结果中的一对多关系中的项目数?的主要内容,如果未能解决你的问题,请参考以下文章