将NSManagedObjects添加到一对多关系中

时间:2012-06-12 02:49:33

标签: iphone objective-c core-data many-to-many one-to-many

我有很多关系,例如一个学生有很多课程。

为什么在运行以下代码时_classes没有新的Cls对象?然而,当我关闭应用程序并重新打开它时。

作为后续问题,如何在添加新的课程后立即获得新的课程列表?

NSMutableSet* classes = [student mutableSetValueForKey:@"classes"];
NSManagedObject* cls = [NSEntityDescription insertNewObjectForEntityForName:@"Cls" inManagedObjectContext:context];
[cls setValue:name forKey:@"name"];
[student addClassesObject:cls];

NSError* err;
[context save:&err];

NSMutableSet* _classes = [student mutableSetValueForKey:@"classes"];

这就是我的addClassesObject:操作的样子(由XCode自动生成)

- (void)addClassesObject:(Cls*)cls
{

}

谢谢!

1 个答案:

答案 0 :(得分:3)

您无法直接向对象添加对象。您需要使用Core Data生成的访问者或您自己的自定义访问者。查看.h文件,您应该看到

的内容
-(void)addClsObject:(Cls *)theObject;

并且

-(void)addClsObjects:(NSSet *)set;

因此,对于您的特定情况,一旦有了Cls对象,就会执行以下操作:

[student addClassesObject:cls];

然后执行保存,您应该能够检索设置的类。仅供参考,调用此方法和relatd NSSet relatd方法也会为您设置反向关系。

祝你好运

Ť