CoreData - 有没有一个很好的方法来upsert项目?

时间:2012-09-11 16:31:09

标签: ios core-data upsert nsmergepolicy

只是想知道CoreData db upsert 项是否有好方法?

或者有没有办法让我将CoreData数据库视为一个集合?

我的意思是,如果我将一个项目插入到数据库中,并且如果在那里已经存在相同的冗余项目,则数据库会忽略它。有什么办法方便吗?或者我每次插入时都要查询以避免冗余?

2 个答案:

答案 0 :(得分:4)

否 - 核心数据无法知道您如何将项目视为“相同”或“冗余”。这些单词的定义几乎可以随您创建的每个实体而变化 - 例如,企业中的部门可能具有唯一的名称,但多个人可以具有相同的名称(并经常这样做)。

但是,您可以利用Core Data的查询功能,并使用NSPredicate快速查询,以确定是否已存在具有所选标识符的记录。您可以将此查询考虑到自己的方法(可能在您的托管对象子类上),以便您可以方便地调用它。

答案 1 :(得分:3)

我最近阅读了这篇文章

https://www.upbeat.it/upsert-in-core-data/

基本上,首先在名称上创建一个约束,然后在Core Data上下文中指定TrumpMergePolicy。

managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy