ios - 在核心数据中,建立一对一的关系是一个好的实践吗?

标签 ios swift core-data

我有两个实体:核心数据中的 A 和 B。 A 与 B 具有一对一的关系。我最好只在实体 A 中保存一个entityB'Id,然后在需要时对实体 B 进行提取吗?

我的想法:

我仍然认为一对一的关系更好。

  1. 我同意有时没有必要建立一对一的关系。但是我检查了 Core Data 生成的 sqlite 文件。对我来说,核心数据似乎正在将该关系保存为其中包含 Id 的列。因此,我认为保存一对一关系并不比保存实体B' Id 更昂贵。

  2. 从实体 A 获取对象后,一对一关系允许我访问实体 B 中的相关对象,而无需再次获取。而且我认为执行一次提取来获取具有关系的对象比执行两次提取更好。

最佳答案

无论哪种方式都可能没问题。我同意,除了将数据存储在关系中之外,不会对性能产生真正的影响;破坏关系的速度非常快。如果关系中的数据相对较大,那么将其存储在单独的实体中可能是一个很好的做法,因为这样可以在不需要时不会出错。将其存储在一个实体中可以使与 fetchedResultsController 的某些交互变得更容易。例如,如果正在获取实体 A,但有一个基于实体 B 的谓词,则如果实体 B 发生更改,则 fetchedResultsController 将错过它。

关于ios - 在核心数据中,建立一对一的关系是一个好的实践吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44380518/

相关文章:

ios - `tableView heightForRowAtIndexPath`方法get调用的场景是什么?

core-data - NSFetchRequest 在第一次运行时返回对象,但随后不返回对象

ios - Parse 中的 UITableView,索引不正确

ios - png数据返回UIImage

ios - Swift - 拼图对齐放置

ios - swift - NSPREDICATE 失败

iphone - 是否可以在获取请求期间让 Core Data 对一对多关系的 "many"部分进行排序?

ios - 如何使用 swift 函数 loadLeaderboardSets WithCompletionHandler

ios - 以编程方式创建 View 时,我应该在哪里设置自动布局约束

iphone - willAnimateRotationToInterfaceOrientation 未在一个 subview 中调用,而另一个 subview 可见并已旋转