2012-06-12 71 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

相關問題