我有一个NSManagedObject
对象,里面填充了我想在多个视图控制器中使用的数据。
我可以将此对象转换为单个对象并在多个视图控制器中使用它吗?或者我应该使用不同的方法吗?
答案 0 :(得分:2)
作为单例的替代方法,请考虑将其作为应用程序委托中的属性,并在应用程序完成启动时初始化。
在视图控制器中,在实例化视图时设置对此属性值的NSManagedObject
引用。
答案 1 :(得分:2)
您已经在传递NSManagedObjectContext。您可以使用它随时获取所需的数据。
我不知道核心数据如何对你做出单例实例做出反应。首先,NSmanagedObject不使用与NSObject相同的初始化方法。
它使用-awakeFromInsert和-awakeFromFetch。所以你已经遇到了问题。
请参阅Marcus Zarra(核心数据大师)的article。
简而言之,只需执行新的获取即可获取所需的数据,无需在其中使用单例。
答案 2 :(得分:0)
这取决于你为什么要把它变成单身,如果你把它传递给需要访问数据的所有实体有困难,使用单例并不是一个好的解决方案。它通常会引入更多问题而不是解决任何问题。
如果您担心对同一对象进行多次编辑,Core Data有处理这种情况的机制,请参阅“核心数据编程指南”中的“变更管理”一章