我可以将NSManagedObject变成单例吗?

时间:2009-09-02 21:05:55

标签: iphone core-data singleton

我有一个NSManagedObject对象,里面填充了我想在多个视图控制器中使用的数据。 我可以将此对象转换为单个对象并在多个视图控制器中使用它吗?或者我应该使用不同的方法吗?

3 个答案:

答案 0 :(得分:2)

作为单例的替代方法,请考虑将其作为应用程序委托中的属性,并在应用程序完成启动时初始化。

在视图控制器中,在实例化视图时设置对此属性值的NSManagedObject引用。

答案 1 :(得分:2)

您已经在传递NSManagedObjectContext。您可以使用它随时获取所需的数据。

我不知道核心数据如何对你做出单例实例做出反应。首先,NSmanagedObject不使用与NSObject相同的初始化方法。

它使用-awakeFromInsert和-awakeFromFetch。所以你已经遇到了问题。

请参阅Marcus Zarra(核心数据大师)的article

简而言之,只需执行新的获取即可获取所需的数据,无需在其中使用单例。

答案 2 :(得分:0)

这取决于你为什么要把它变成单身,如果你把它传递给需要访问数据的所有实体有困难,使用单例并不是一个好的解决方案。它通常会引入更多问题而不是解决任何问题。

如果您担心对同一对象进行多次编辑,Core Data有处理这种情况的机制,请参阅“核心数据编程指南”中的“变更管理”一章