Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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_Entity Relationship_Mkannotation - Fatal编程技术网

Core data 具有指向对象的属性的核心数据实体

Core data 具有指向对象的属性的核心数据实体,core-data,entity-relationship,mkannotation,Core Data,Entity Relationship,Mkannotation,我不知道如何在我的核心数据实体和一些在实体创建并提交到数据库时实例化的对象之间保持双向关系 我有许多子类MKAnnotation对象,它们与实体具有一对一的关系。每次我的fetchedResultsController执行一个新的fetch时,我都假设以前的fetch的结果会被释放,并且所获取的NSManagedObject会重新映射到内存中。所以我一对一的关系破裂了。如果我可以在核心数据中保存指向MKAnnotation对象的指针,那么可以解决一半的问题(一个方向上的关系)。这有意义吗?你会怎

我不知道如何在我的核心数据实体和一些在实体创建并提交到数据库时实例化的对象之间保持双向关系

我有许多子类MKAnnotation对象,它们与实体具有一对一的关系。每次我的fetchedResultsController执行一个新的fetch时,我都假设以前的fetch的结果会被释放,并且所获取的NSManagedObject会重新映射到内存中。所以我一对一的关系破裂了。如果我可以在核心数据中保存指向MKAnnotation对象的指针,那么可以解决一半的问题(一个方向上的关系)。这有意义吗?你会怎么做


我在应用程序重新启动时删除所有核心数据内容,因此,我并不担心关系信息的长期持久性。

混合指针和托管对象通常是徒劳的,因为核心数据有太多的优化,直接内存管理几乎是不可能的,例如,对象可能会恢复为故障

你真的走错了路。核心数据主要不是一个持久性API,它是一个数据建模API,旨在提供模式视图控制器设计应用程序的完整模型层。因此,您可以在不保存任何内容的情况下使用它。如果您使用的是核心数据,并且有地图注释等数据,则应在核心数据中对注释进行建模。这样做可以简化一切


由于没有MSAnnotation类,只有一个MKAnnotation协议,因此本例中最简单的解决方案是创建一个实现MKAnnotation协议的NSManagedObject类。您可以将位置数据(如
CLLocationCoordinate2D
)转换为NSValue,或者更好的是,只为它们创建属性。由于该类实现了该协议,因此您可以在传递任何协议对象的任何位置传递托管对象

我想我明白你的意思。我将把MKAnnotation属性实现为托管对象实体中的瞬态属性。我看到actaul地图注释视图会根据需要进行更新,并且已经有了我想要的绑定。关于实现trsnsient属性,我有一些问题,但我在另一个问题中发布了这些问题。如果您实际上不需要对MKAnnotation属性进行建模或持久化,则可以将它们添加为自定义NSManagedObject子类的未建模属性。未建模的属性是在类中找到的属性,而不是在实体中找到的属性。托管对象上下文将忽略它们。