使用Magicalrecord获得单个实体的最佳方法

时间:2013-08-27 15:24:48

标签: ios core-data magicalrecord

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

我有一个名为Customer的实体,这只会在Core Data上有一个条目,因为客户只有一个。

实现此目标的最佳解决方案是什么?是否每次都在创建之前检查实体是否存在?

非常感谢

3 个答案:

答案 0 :(得分:2)

如上所述,您可以使用单个对象[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”< / em> )或名为“mappedKeyName”的密钥。

如果具有此键的实体已存在 - Magical Record只更新此实体。

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

[Customer MR_importFromObject:JSONToImport];

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

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

这取决于您获取数据的方式以及您希望相关对象发生的事情。