我对CoreData有以下问题,我找不到任何处理它的教程。问题是我在两个实体之间有多对多的关系:Station和Program。给定的站可以分配许多程序,并且可以将给定的程序分配给许多站。在中间,时间与关系有关。因此,元组站程序具有关联的属性时间。环顾四周后,我发现最好的解决方案是创建一个中间实体,我称之为TimeStationProgram:
电台< - >> TimeStationProgram<< - >程序
我可以正常创建Station和Program的实例。但是,我不知道如何创建新实体TimeStationProgram的特定实例。我也不知道如何删除或恢复特定数据。谢谢!
Objective-C中的代码也是受欢迎的。
答案 0 :(得分:0)
我已经修改了你的ERD了一点,在Station和Program之间添加了一个额外的关系(假设你想做的事情:给一个站点,给我看所有的程序,反之亦然)。此外,我将电台/节目和TimeStationProgram之间的关系更改为1比1,因为您在单个电台和单个节目之间只有1次时间关系(即,您不会多次执行该程序可以在同一个车站上获得)
现在,上面提到的每个项目都是'对象'。因此,您需要在开始创建对象时考虑对象并将它们关联在一起。
// Create the instances
// create a Station
Station *dbEntityStation = [NSEntityDescription
insertNewObjectForEntityForName:@"Station"
inManagedObjectContext:[self.managedObjectContext]];
// create a Program
Program *dbEntityProgram = [NSEntityDescription
insertNewObjectForEntityForName:@"Program"
inManagedObjectContext:[self.managedObjectContext]];
// create a TimeStationProgram
TimeStationProgram *dbEntityTSP = [NSEntityDescription
insertNewObjectForEntityForName:@"TimeStationProgram"
inManagedObjectContext:[self.managedObjectContext]];
// Handle the relationships
// Map Station to TimeStationProgram
dbEntityStation = dbEntityTSP;
// Map Program to TimeStationProgram
dbEntityProgram = dbEntityTSP; // note same TSP instance for both Station & Program
// Map Station to Program
[dbEntityStation addProgramsObject:dbEntityProgram]
// if you wanted to add multiple Program(s) to a Station you would need to load them into a set then add as follows
// NSMutableSet *programs = [NSMutableSet new];
// <load up the set with Program(s)
// [dbEntityStation addPrograms:programs];
关键是你需要创建所提到的3个对象中的每一个。您需要确定应关联哪些对象,然后您需要收集这些对象并通过它们的关系将它们相互映射。我上面使用的例子很简单,我希望你的程序会更复杂。特别是涉及获取现有程序并将它们与站点相关联的部分。
注意:这不是代码完整的,但应绘制图片。