Core data 核心数据:将托管对象传递给类
我有一个在核心数据中存储产品数据的应用程序。我有一个popover控制器,您可以在其中选择一个客户端,它通过Notification Center回调根视图控制器,然后根vc从核心数据获取该客户端的购买协议。我们将其存储为vc(workingPA)的属性 然后显示该购买协议数据。我们有一个计算器类(NSObject的子类),当用户对PA进行编辑时,它会启动并运行一系列计算,从我们从核心数据检索到的PA管理对象中获取基本数据。我们将PA从根vc传递给calculator类,如下所示: calculator.workingPA=自工作paCore data 核心数据:将托管对象传递给类,core-data,properties,Core Data,Properties,我有一个在核心数据中存储产品数据的应用程序。我有一个popover控制器,您可以在其中选择一个客户端,它通过Notification Center回调根视图控制器,然后根vc从核心数据获取该客户端的购买协议。我们将其存储为vc(workingPA)的属性 然后显示该购买协议数据。我们有一个计算器类(NSObject的子类),当用户对PA进行编辑时,它会启动并运行一系列计算,从我们从核心数据检索到的PA管理对象中获取基本数据。我们将PA从根vc传递给calculator类,如下所示: calcul
我的问题是,这是一种可以接受的将核心数据对象传递给另一个类的方法,还是有另一种“最佳实践”来实现这一点 是的,这完全可以接受。在Apple的master/detail示例应用程序中,所选对象是如何从masterView传递到detailView的。然后,detailView可以更新对象并保存managedObjectContext。只要确保在对象被删除时正确地取消引用它。如果从核心数据中删除对象,然后尝试访问视图中保留的对象,则会得到一些奇怪的东西。最好在做任何事情之前,在计算器中检查nil。Duncan,谢谢你的回复。不确定我是否遵循解除引用部分-你的意思是当我们在calc类或根vc中使用workingPA时,在它被传递之后-比如calculator.workingPA=self.workingPA;[计算器doStuff];calculator.workingPA=nil;只有在使用
[NSManagedObjectContext deleteObject:]时才会出现此问题
API删除workingPA
,然后出于某种原因返回calculatorView
,而无需重置workingPA
,并尝试使用仍然存储在计算器中的上一个引用访问现在删除的workingPA
对象。您的引用仍然有效,但您在尝试访问对象属性时会遇到异常,因为它已被删除,并且对象MOC将被设置为nil。好的,谢谢-我们确实会删除它,但这只是在与后端同步时发生的,并且在它传递给计算器之前发生的。我们发现用户在更新PA时出现了奇怪的行为,但更改没有显示出来——而且不一致,有时效果很好。我得继续挖。