Ios 最佳实践:在框架中公开NSManagedObject

Ios 最佳实践:在框架中公开NSManagedObject,ios,core-data,nsmanagedobject,Ios,Core Data,Nsmanagedobject,我正在用iOS制作一个库/框架,它结合了即时通讯功能,使用CoreData(加上MagicalRecord和Mogenerator)来存储消息和对话 我主要有两个NSManagedObject类:Message和Conversation。例如,在Message中,我有一些类方法来创建实体(比如[Message createMessage]和一些实例方法来查询表(比如[Message getLatestMessages]) 我的问题是,在我的框架消息和对话(以及它们的所有公共方法)中公开多少是一个

我正在用iOS制作一个库/框架,它结合了即时通讯功能,使用CoreData(加上MagicalRecord和Mogenerator)来存储消息和对话

我主要有两个
NSManagedObject
类:
Message
Conversation
。例如,在
Message
中,我有一些类方法来创建实体(比如
[Message createMessage]
和一些实例方法来查询表(比如
[Message getLatestMessages]

我的问题是,在我的框架
消息
对话
(以及它们的所有公共方法)中公开多少是一个好的实践。 我应该采取不同的方法,比如用其他类包装实体吗?
但是,数据库上下文对框架的用户总是隐藏的。

不要包装它们,它们已经足够抽象了。只需公开它们,因为它们只是数据对象


您应该有一个入口点来检索数据和保存数据。某种形式的DataController向外部应用程序公开。

NSManagedObject
或其
NSManagedObjectContext
被解除分配时,您如何处理这种情况?处理任何其他被解除分配的对象的方式相同。如果如果您没有被释放,那么您就有一个bug。我的意思是,有没有一种简单的方法可以将NSManagedObject的“副本”从其原始上下文中分离出来。让我们想象一个函数
getObject
,它只为这个函数创建一个新的MOC(不保留对它的引用),执行查询并返回结果。当MOC将被解除分配时,返回对象的属性将全部等于零。除了返回
NSDictionary
或创建特定的
NSObject
实例外,是否有惯用的方法防止这种情况发生?如果对象在存储中,则任何上下文都可以检索另一个copy,因此您可以建立另一个上下文并将对象提取到该上下文的空间中。您还可以使用KVC获取对象中值的字典副本。您试图解决什么问题?也许有一种更好的方法,我没有从您的问题中看到。