目前我的模型中有两个实体;模块和级别。他们有一对多的关系,例如一个级别可以有很多模块。如何插入数据以使它们相互关联,以便我可以说该模块具有特定的年份。我需要这个,这样当我删除模块时它也会删除一年。
模块<< ---->级
如果我只是单独添加对象,它工作正常,但我添加最后一行代码应用程序崩溃它说实体模块不是键值编码兼容的密钥level_number,这是模块端的关系名称。
NSManagedObject *newModule;
newModule = [NSEntityDescription
insertNewObjectForEntityForName:@"Module"
inManagedObjectContext:context];
[newModule setValue:textModuelTitle.text forKey:@"name"];
[newModule setValue:value forKey:@"credit"];
NSManagedObject *newLevel;
newLevel = [NSEntityDescription
insertNewObjectForEntityForName:@"Level"
inManagedObjectContext:context];
[newLevel setValue:year forKey:@"value"];
[[newModule mutableSetValueForKey:@"level_number"] addObject:newLevel];
答案 0 :(得分:2)
当你有一对多关系时,从一侧设置值,Core Data
将关注另一方。
由于某个级别与模块具有一对一的关系。将模块设置为某个级别,然后保存上下文。
答案 1 :(得分:0)
你能发布整个崩溃消息。
仔细检查你的关系设置是否正确。有时,模拟器可能会保留旧的coreData结构。尝试从中删除应用程序并重新运行。