ios - 将 NSManagedObject 设为委托(delegate)是一种好习惯吗?

标签 ios macos core-data nsmanagedobject

任务详情:

我正在开发一个同时与 1-30 个硬件设备通信的应用程序,每个设备都有自己的 tcp 连接。

因此,我创建了一个实体“hardwareObject”,它代表该设备的一些属性,例如值 1 和值 2。

我创建了一个连接处理程序类,我将其定义为“hardwareObject”实体的 transient 属性。在 UI 更改时,核心数据对象被修改,核心数据对象本身告诉它的连接发送 value1 或 value2 的更改。

当新数据通过委托(delegate)方法到达时,我想通知“hardwareObject”实例,因此它是其属性的委托(delegate)。

我想知道是否让 NSManagedObject 成为 s.th 的代表。是个好习惯吗?

这可能会导致有关故障或其他核心数据相关事物的任何问题吗?
还是我应该更好地创建一个 sharedInstance 主连接处理程序对象来处理每个连接处理程序并仅在需要时与我的核心数据对象通信?

最佳答案

这是一个完全有效的设计。 NSManagedObjects 可以由它们的(托管对象)上下文管理,但是如果您保留一个 NSManagedObject,它将保持有效,并且您可以自由地在该类中实现任何特殊业务逻辑或使其成为委托(delegate)。事实上,Core Data 允许你继承 NSManagedObject 的一个重要原因就是你可以做这些事情。

如果您需要从上下文中删除对象,请确保将您的类取消注册为委托(delegate)。

关于ios - 将 NSManagedObject 设为委托(delegate)是一种好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240344/

相关文章:

ios - 根据 API 的结果选择 Tableview 单元格

ios - UIView - 什么覆盖将允许更新 UIView 框架

macos - LSUIElement 不工作

python - python 中区分大小写的路径比较

ios - UIImage 存储在 CoreData 到 UIWebView HTML Doc

ios - fabric什么时候创建app

ruby-on-rails - 如何让 RVM 在我的 Mac 终端中被识别?

ios - 使用 Coredata Swift 发送到实例的无法识别的选择器

ios - 在 IOS 中使用 iCloud 导出和导入文档

ios - 核心数据属性的自定义 Getter