xcode 核心数据多个NSMergePolicy

byqmnocz  于 2023-03-04  发布在  其他
关注(0)|答案(1)|浏览(132)

大家好我可爱的社区,希望大家都过得好。
我想知道你有没有发现你自己需要在核心数据中使用多个合并策略。因此使用多个NSManagedObjectContext。就像下面的例子:

让我们假设我们有两个实体,并且两个实体都有一个约束。但是您希望以不同的方式处理这些约束。例如,在一个实体中,您不希望覆盖,但在另一个实体中,您希望用缓存覆盖存储,或者在另一个实体中,您只是希望引发一个错误。
那么,您遵循的是什么方法?
示例:第一天数据库中有20000辆汽车。第二天应用程序获取1000辆新车。但假设其中5辆已经在数据库中,我们不想更新它们(mergeByPropertyStoreTrumpMergePolicyType)。因此,当我们批量创建/插入995辆汽车时,将插入数据库。(总共20995辆)
假设数据库中有200个人员,应用程序从后端获取10个新人员。这10个人员中有5个已经在我们的数据库中(相同的人员ID)。但在这种情况下,我们希望覆盖数据库中的人员。因此,当我们批量创建/插入10个人员时,其中5个将被覆盖。(总共205个)(mergeByPropertyObjectTrumpMergePolicyType)

gtlvzcf8

gtlvzcf81#

使用两种不同的上下文是可以的,如果这对你有用的话。还有一些其他的可能性:

  • 如果两个API调用不是并发的,你可以使用相同的上下文,但是动态地改变合并策略。它不是固定的,所以你可以根据需要来回切换。除非两个实体都来自API调用,或者除非我真的需要它们并发运行,否则我可能会这样做。
  • 一个更复杂但可能更令人满意的方法是通过子类化NSMergePolicy并实现resolve(optimisticLockingConflicts list: [NSMergeConflict])来构建您自己的自定义合并策略。然后您的自定义合并代码可以用不同的方式合并不同的实体。关于这方面的文档非常少,但前面的答案可能会有所帮助。这是我更愿意做的,但第一种方法编写起来会更快。

相关问题