代码之家  ›  专栏  ›  技术社区  ›  Pedro Milanez

使用Magicalrecord创建单个实体的最佳方式

  •  1
  • Pedro Milanez  · 技术社区  · 12 年前

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

    我有一个名为客户的实体,它在核心数据上只有一个条目,因为客户只有一个。

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

    非常感谢

    3 回复  |  直到 12 年前
        1
  •  2
  •   skywinder Grady Player    12 年前

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

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

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

    BDW:

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

    如果有这个密钥的实体已经存在-魔法记录只需更新这个实体。

    因此,如果您在实体中指定了这个值it,只需写入:

    [Customer MR_importFromObject:JSONToImport];
    
        2
  •  1
  •   Tom Harrington    12 年前

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

        3
  •  0
  •   Abizern    12 年前

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

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

    您还可以使用一个简单的方法来获取当前客户或创建一个客户,然后更新其所有财产。

    这在某种程度上取决于您如何获得数据,以及您希望对相关对象进行什么处理。