【问题标题】:Best way to have a single Entity using Magicalrecord使用 Magicalrecord 拥有单个实体的最佳方式
【发布时间】:2013-08-27 15:24:47
【问题描述】:

我正在寻找实现此行为的最佳解决方案:

我有一个名为 Customer 的实体,它在 Core Data 上只有一个条目,因为 Customer 将只有一个。

实现这一点的最佳解决方案是什么?是否每次创建之前检查实体是否存在?

非常感谢

【问题讨论】:

    标签: ios core-data magicalrecord


    【解决方案1】:

    如前所述,您可以使用单个对象 [NSUserDefaults standardUserDefaults]。

    但如果您更喜欢使用 CoreData,请写下:

    Customer* customer = [Customer MR_findFirst];
    if (customer != nil)
    {
        //do something with it
    } else
    {
        [Customer MR_importFromObject:JSONToImport];        
    }
    

    BDW:

    MR_importFromObject 方法自动检查是否存在具有特定 id 的实体(对于 id 键,它使用您的实体名称的属性加上“ID”。(在您的情况下 “customerID”) 或名为“mappedKeyName”的键。

    如果具有此密钥的实体已经存在 - Magical Record 只需更新此实体。

    因此,如果您在实体中指定此值,只需编写:

    [Customer MR_importFromObject:JSONToImport];
    

    【讨论】:

    • 这正是我正在做的事情!谢谢! :)
    【解决方案2】:

    如果只有一个实例,最好的解决方案通常是不要把它放在 Core Data 中。它给你的东西很少,而且像你看到的那样增加了复杂性。将必要的信息保存在属性列表中,甚至保存在用户默认值中。

    【讨论】:

      【解决方案3】:

      在创建新实体之前检查实体是否存在是个好主意。

      您可以获取客户实体类型的所有实体并将其全部删除,然后再添加新实体是另一种方法。

      您还可以有一个简单的方法来获取当前客户或创建一个然后更新它的所有属性。

      这在某种程度上取决于您如何获取数据以及您希望相关对象发生什么。

      【讨论】:

      • 计算实体实例的数量也可以是一种检查机制。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多