2012-06-12 69 views
3

我有一对多的关系,例如,一个学生有很多课程。将NSManagedObjects添加为一对多关系

为什么当我运行下面的代码_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 
{ 

} 

谢谢!

+0

我假设你想显示在此的tableView的数据,您使用的是线[的tableView reloadData]; (也许在viewDidLoad :)?如果情况并非如此,你能否在你的问题上更具体一些? – tarheel

+0

没有表格视图。在添加新类之后,我只需要'NSSet',但在退出应用程序之前。 – zachwhaley

回答

3

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

-(void)addClsObject:(Cls *)theObject; 

而且

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

线的东西所以对你的具体情况,你会做以下,一旦你有你的CLS对象:

[student addClassesObject:cls]; 

然后执行你保存,你应该能够检索类设置。仅供参考,称这种方法和相关的NSSet relatd方法也为您建立了相反的关系。

好运

牛逼

+0

我是否必须为这些操作添加功能?因为简单地调用该操作什么也不做。 – zachwhaley

+0

不,假设这些是Core Data为您生成的方法,您应该保持良好的状态。他们为你处理一切。您可能想要发布修改后的代码。 – timthetoolman

+0

更新并发布了我的'addClassesObject:'操作。 – zachwhaley

相关问题