Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Core data 核心数据:将托管对象传递给类_Core Data_Properties - Fatal编程技术网

Core data 核心数据:将托管对象传递给类

Core data 核心数据:将托管对象传递给类,core-data,properties,Core Data,Properties,我有一个在核心数据中存储产品数据的应用程序。我有一个popover控制器,您可以在其中选择一个客户端,它通过Notification Center回调根视图控制器,然后根vc从核心数据获取该客户端的购买协议。我们将其存储为vc(workingPA)的属性 然后显示该购买协议数据。我们有一个计算器类(NSObject的子类),当用户对PA进行编辑时,它会启动并运行一系列计算,从我们从核心数据检索到的PA管理对象中获取基本数据。我们将PA从根vc传递给calculator类,如下所示: calcul

我有一个在核心数据中存储产品数据的应用程序。我有一个popover控制器,您可以在其中选择一个客户端,它通过Notification Center回调根视图控制器,然后根vc从核心数据获取该客户端的购买协议。我们将其存储为vc(workingPA)的属性

然后显示该购买协议数据。我们有一个计算器类(NSObject的子类),当用户对PA进行编辑时,它会启动并运行一系列计算,从我们从核心数据检索到的PA管理对象中获取基本数据。我们将PA从根vc传递给calculator类,如下所示:

calculator.workingPA=自工作pa


我的问题是,这是一种可以接受的将核心数据对象传递给另一个类的方法,还是有另一种“最佳实践”来实现这一点

是的,这完全可以接受。在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时出现了奇怪的行为,但更改没有显示出来——而且不一致,有时效果很好。我得继续挖。