如何让Core Data只生成一个类型实体的实例

时间:2013-12-07 00:38:09

标签: macos core-data singleton status

因此。在我得到单身模式之前,对此消息的仇恨听到了我的声音。我很想听到想法。我正在创建一个我认为需要使用核心数据的程序,因为后来我希望从OS X和多个iOS设备可以轻松访问某些变量的状态。

我所做的是一个OS X程序,它将控制phidgets(phidgets.com)来控制和监听现实世界对象中的状态变化。示例:电机是否打开。打开和关闭电机。打开状态指示灯等

我原本以为我只会创建我更改,轮询和操作的全局变量,以便为程序逻辑提供一个中央状态板。但是,由于苹果公司每年将核心数据放入工程中,我假设使用核心数据进行这项工作将使我能够更轻松地选择稍后与可以控制或监控所述状态的iOS设备进行同步。远程的。

你能想象出一种漂亮的方式:

- 启动程序,确认只有一个类型为“SystemStatus”的实体,如果没有,则生成一个。是否有一个,我们继续并且能够让程序使用它控制的现实世界对象的状态更新它的属性。

使用核心数据也是我想到的,因为它将允许我一个地方来保存所收集的数据的存储历史记录。示例:电机轴承温度随时间变化。

1 个答案:

答案 0 :(得分:0)

如果确保通过API完成对此对象的访问,则Core Data将成为singleton对象的getter方法背后的实现细节。 Core Data中没有任何工具可以告诉它只创建一个对象,但如果您确保通过自己的包装器访问该对象,则可以按需获取它,如果它不存在,则可以插入它,保存并传递给调用者。

使用Core Data对象时需要考虑的重要事项是多线程。将相同的对象传递给多个线程非常容易出错并需要锁定机制(或使用Apple的基于块的API)。对于您所描述的内容,这并不是非常简单。考虑在内部使用Core Data对象的包装器对象(包装对基于块的API中的属性的访问)或使用与Core Data不同的方法。