我正在创建一个与核心数据一起使用的框架。在核心数据类上使用我的框架的要求之一是,您想要拥有框架功能的任何实体都需要是我提供给您的实体的子实体和子类。为此,我将该对象称为 Foo。
今天我意识到 Core Data 将作为 Foo 子实体的所有对象存储到一个名为 ZFOO 的表中。如果拥有大量数据集的人想要使用 Core Data,我担心它的性能,因为 foo 类的所有子实体都将存储在一个巨大的 ZFOO 表中。
任何意见或建议将不胜感激。
我作为 iOS 负责人与 @deathbob 一起参与了这个项目。在我们的实例中,我有多个包含属性“remote_id”和“remote_update”的类。我最初使用子类设置表。我有一个“RemoteEntity”抽象实体,其中包含这些属性和一堆从它继承的其他实体,每个实体都有自己的属性。我thought我们最终会得到一堆表,每个表都有remote_id、remote_update,然后是它们的自定义属性。相反,我们最终得到了你所描述的巨大桌子。
修复方法非常简单must不通过 GUI 设置继承。相反,包括该对象的所有属性,包括核心数据建模器中的共享属性(这意味着“remote_id”和“remote_update”将出现在每个实体中。也就是说,我们仍然可以使用子类。生成模型的类后,创建父实体的类。这必须not在 GUI 中。它应该继承自 NSManagedObject,并且在 .m 文件中,属性应该使用 @dynamic 而不是 @synthesize。现在您已经有了父类,是时候调整子类了。将父类设置为 RemoteEntity(在我的示例中)而不是 NSManagedObject。然后删除超类中出现的所有属性(在我的示例中为“remote_id”和“remote_update”)。
这是我的超级课程的一个例子https://gist.github.com/1121689 https://gist.github.com/1121689.
我希望这会有所帮助,感谢@deathbob 指出了这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)