【问题标题】:CoreData - Is there a good way to upsert items?CoreData - 有没有一种很好的方法来更新项目?
【发布时间】:2012-09-11 16:31:08
【问题描述】:

只是想知道是否有在CoreData dbupsert 项目的好方法?

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

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

【问题讨论】:

    标签: ios core-data upsert nsmergepolicy


    【解决方案1】:

    我最近读了这篇文章

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

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

    managedObjectContext.mergePolicy = NSMergeByPropertyObjectTrumpMergePolicy
    

    【讨论】:

      【解决方案2】:

      否 - Core Data 无法知道您如何看待一个项目“相同”或“冗余”。这些词的定义几乎可以随着您创建的每个实体而改变 - 例如,企业中的部门可能有唯一的名称,但多个人可以有相同的名称(并且经常这样做)。

      但是,您可以利用 Core Data 的查询能力,并使用 NSPredicate 进行快速查询,以查明具有您选择的标识符的记录是否已经存在。您可以将此查询分解为它自己的方法(可能在您的托管对象子类中),以便您可以方便地调用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-21
        • 2020-03-30
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        • 2012-04-17
        相关资源
        最近更新 更多