我要将持久层添加到我的应用程序中,我决定给出核心数据。目前我将我的所有模型映射到实体,这看起来效果很好。但是在我目前的实现中,我使用了一些我称之为“集合”(模型)的东西,例如我在游戏中有一系列的瓷砖插槽。
这个SlotsCollection类有findNextInSameRow()findAvailableSlot()等方法。我用核心数据做的是我创建了一个Game实体并添加了一个到Slot实体的多个关系,有没有办法定义一个类应该实例化插槽的集合,这样我可以把我的逻辑放在那里?或者我有更好的方法来构建事物。我想我可以在我的游戏实体中创建“经理”并在初始化时交出插槽
SlotManager* manager = [SlotManager alloc] initWithSlots:self.slots];
Slot* slot = [manager findAvailableSlot];
此外,在我将所有模型“迁移”到实体之后,我有很多实体没有任何属性但只保留对其他实体的引用。我很害怕在构建核心数据时使用错误的心态。
答案 0 :(得分:0)
具有该集合的类应该具有该集合的逻辑。
如果你有从A到B的1对多的关系,那么你就把关于这种关系的逻辑放到A类 - 可能还有一些在B类中(取决于你的需要)。
注意:如果您正在迭代关系,则需要了解错误行为等。每当Core Data必须执行实际的数据库工作时,您都会遇到性能损失。这与普通的旧SQL没有什么不同。如果你不必“去磁盘”,事情就会非常快。如果您正在使用获取请求,那么总是执行数据库工作,并且事情总是(相对)昂贵。