2013-08-27 37 views
1

我正在寻找最佳的解决方案来实现这一行为有一个单一的实体:最佳方式使用Magicalrecord

我有一个实体,称为客户,这将只对核心数据的单个条目,因为客户将只有一个。

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

非常感谢

回答

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键就用你的实体名称的属性加上“身份证”(在你的情况下,“customerID”)或名为“mappedKeyName”的密钥

如果具有此密钥的实体已经存在 - 魔法记录只是更新此实体。

所以,如果你指定该值在你的实体,只写:

[Customer MR_importFromObject:JSONToImport]; 
+0

这是我正在做的准确方法!谢谢! :) –

0

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

您可以获取您的客户实体类型的所有实体并删除它们,然后再添加一个新的实体类型为另一种方法。

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

它的种类取决于你如何获得数据以及你想要发生的相关对象。

+0

计数的实体实例的数量也可以是一个检查机制。 – Wain

1

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