0

我目前正在深入研究 Core Data,并且对使用 Core Data NSManagedObject 模型有些困惑。

例如,我会有一个“联系人”实体,它具有名字、姓氏、地址等属性......

我想了解的是,如果可能的话,是否有任何“最佳实践”可以将 NSManagedObject 用作​​常规 NSObjects。

例如,我有一个服务器以 JSON 格式返回一些联系人数据,但我想将它作为某种 NSObject 返回,这样它就有自己的属性、方法等......但另一方面,这样做会很愚蠢创建 2 个类来表示联系实体 - 一个用于处理我想从服务器数据 (NSObject) 提供经过清理的对象的情况,另一个用于处理核心数据 (NSManagedObject) 的情况。有什么方法可以将单个对象用于两个目的?在这种情况下,最佳做法是什么?

编辑: 这是我遇到的一般问题:http: //pastebin.com/WHWNqj2f

4

1 回答 1

0

没有必要为此设置一个以上的类——在所有情况下都使用托管对象。您在评论中提到“我不能只初始化一个 NSManagedObject 而不给它一个上下文”,但事实上这不是真的。当您使用其中一个创建托管对象时,[NSManagedObject initWithEntity:insertIntoManagedObjectContext:][NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:] 不必提供托管对象上下文。只要nil您提供有效的NSEntityDescription. 你得到的是一个不依赖于任何托管对象上下文的托管对象。这对于临时对象很方便,因为您可以在您拥有的任何托管对象上下文中保存更改,而无需保存此对象。

如果您想稍后将对象保存到托管对象上下文,请使用[NSManagedObjectContext insertObject:]. 此时托管对象与上下文相关联,因此保存对上下文的更改将保存对象。

于 2013-10-14T17:02:49.367 回答