在不违反设计原则的情况下,最好的方法是什么?
一个示例是在 awakeFromInsert 中获取该实体的所有先前实例,然后在发现某些内容时抛出异常(或任何人想要执行的操作)。但这种方式很糟糕,因为在模型对象中访问 MOC 肯定不好。
最佳答案
您实际上无法在核心数据对象图上强制执行单例模式。您可以尝试限制另一个实例的插入,但这很麻烦。
根据我的经验,认为您需要单例托管对象的想法表明设计很差。单例用于程序内部的控制。核心数据对象应该代表现实世界的对象、事件或条件,而现实世界的对象、事件和条件不会以单例或类似的形式出现。
您可能正在尝试将 Controller 甚至 View 逻辑放入数据模型中。您可能想重新考虑您的数据模型。
关于objective-c - 仅允许给定核心数据实体的一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5446192/