Ios 在核心数据中正确使用NSManagedObjects

Ios 在核心数据中正确使用NSManagedObjects,ios,core-data,nsmanagedobject,nsmanagedobjectmodel,Ios,Core Data,Nsmanagedobject,Nsmanagedobjectmodel,我目前正在深入研究核心数据,对使用核心数据NSManagedObject模型有一些小的困惑 例如,我将有一个“联系人”实体,该实体具有诸如名字、姓氏、地址等属性 我想了解的是,如果可能的话,是否有将NSManagedObject用作常规NSObject的“最佳实践” 例如,我有一个服务器返回一些JSON格式的联系人数据,但我想将其作为某种NSObject返回,以便它有自己的属性、方法等。。。但另一方面,创建两个类来表示联系人实体是愚蠢的——一个用于处理我想从服务器数据(NSObject)提供一个

我目前正在深入研究核心数据,对使用核心数据NSManagedObject模型有一些小的困惑

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

我想了解的是,如果可能的话,是否有将NSManagedObject用作常规NSObject的“最佳实践”

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

编辑:
这是我遇到的一个普遍问题:

对于这个问题,不需要有多个类——只需在所有情况下使用托管对象即可。您在评论中提到“我不能在不提供上下文的情况下初始化NSManagedObject”,但事实并非如此。使用
[NSManagedObject initWithEntity:InsertingManagedObjectContext:
[NSEntityDescription insertNewObjectForEntityForName:inManagedObjectContext:
创建托管对象时,不必提供托管对象上下文。如果该参数为
nil
,只要提供有效的
NSEntityDescription
,就可以了。您得到的是一个未绑定到任何托管对象上下文的托管对象。这对于临时对象来说非常方便,因为您可以在任何托管对象上下文中保存更改,而无需保存此对象


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

最佳做法是两种情况下都使用一个对象。只需在NSManagedHect中实现一个自定义init方法([[YourObject alloc]initWithJSONDictionary:…]),并分配相应的values@CarlJ-问题是,我不能在没有上下文的情况下初始化NSManagedObject。此外,我无法创建可用于核心数据的NSObject。这正是我遇到的问题。创建一个NSManageObject,然后将值传递给它,不保存上下文。必须能够无限制地随机保存上下文。。。这是问题的一部分。例如,我有一个新创建的“联系人”对象的数组,我将它们与SQLite中当前的对象进行比较。在这条路上的某个地方,我可能必须用一些新的更新来保存上下文,但我不希望NSArray中的对象包含在其中。有点难以解释,希望你明白我的意思。sry,我不明白具体的问题,但我总是建议使用NSManagedObject。嘿,Tom,谢谢-我以前使用这种方法,但这阻止了我使用MagicalRecord。。。所以不幸的是,我正试图把它修好一点。使用两种不同上下文的建议可行吗?