1

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

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

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

非常感谢

4

3 回答 3

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”)或名为“mappedKeyName”的键。

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

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

[Customer MR_importFromObject:JSONToImport];
于 2013-08-28T17:10:22.863 回答
1

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

于 2013-08-27T18:22:21.853 回答
0

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

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

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

这有点取决于您如何获取数据以及您希望相关对象发生什么。

于 2013-08-27T15:35:25.830 回答