这与我之前问过的问题类似,但现在我已经走得更远了,我仍然有一个关于 NSManagedObject 的“正确”子类化的问题,因为我昨晚被告知这是一个“坏主意”很多非持久性属性和 ivars 都在其中。目前,我的 NSManagedObject 中有大量代码,而 Apple 的文档并没有真正解决其“正确性”。仅供引用:该代码可以工作,但我想问的是前面是否存在陷阱,或者是否可以通过其他方式进行明显的改进。
我的“对象”是不断增长的传入数据数组、跟踪该数据分析进度的属性/ivars 以及处理后的数据(输出)。所有这些都存储在内存中,因为它会变得巨大、非常快,并且不可能连续地重新生成/重新分析。实际持久化的 NSManagedObject 属性只是原始数据(定期保存,因为 Core Data 不支持 NSMutableData)、一些基本属性和 2 个与其他 NSManagedObject 的关系(1 个是用户,另一个是一组快照)数据)。尽管可以打开数十个对象进行查看(这可能涉及随时进行进一步处理),但在任何时候仅记录一个对象。
不可能让插入实体的对象(管理核心数据的数据管理器)在其中包含所有处理逻辑/变量,因为每个对象至少需要一些用作中介的数组/属性和跟踪分析值。我个人认为,为每个正在使用的对象创建两个对象(NSManagedObject 是存储,另一个对象是处理/临时存储)听起来很愚蠢。
基本上,我能找到的使用 NSManagedObjects 的所有示例都有 super 简单的对象,例如坐标、地址簿条目、图片:基本上是静态的东西。在这种情况下,我可以看到在对象外部创建/修改它们的所有逻辑。然而,我的情况并没有那么简单,我还没有想出一个不涉及重复的替代方案。
如有任何建议,我们将不胜感激。
最佳答案
您可以使用“包装器”,也就是说一个引用您的托管对象实例之一的类,该包装器将包含您的算法和非持久算法。
关于objective-c - NSManagedObject 作为存储并持续分析原始数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15534571/