objective-c - NSManagedObject 作为存储并持续分析原始数据

标签 objective-c cocoa core-data nsmanagedobject

这与我之前问过的问题类似,但现在我已经走得更远了,我仍然有一个关于 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/

相关文章:

macos - QT5.5 'failed to load platform plugin " cocoa ”' - MacOS 10.9

iphone - 如何用CoreData和NSFetchedResultsController实现UITableView中的逻辑删除

swift - 使用未解析的标识符 'NSInsertedObjectsKey'

ios - 将 UISearchBar 取消按钮更改为图标

objective-c - 垂直数组 View ,可能是 NSOutlineView

objective-c - 使用 SQL 直接从我的数据库中删除 CoreData 数据

objective-c - cocoa 应用程序中的VPN

objective-c - UITableViewController 应用程序崩溃

ios - 如何使用自动布局来防止任意数量的动态创建的 View 重叠

ios - 将本地数据json转换为远程数据json