これがcoredataアーキテクチャの構造です。
「アーティスト」にエントリを追加した後、新しく追加された「アルバム」エントリにそれらを使用すると、完全に機能します。
しかし、問題は画像 2 と 3 に示すように、「マイケル ジャクソン」を「インソムニアック 2010」アルバムに割り当て、同じアーティストを「ベイビー フィート リュダクリス」に追加すると、アルバム「インソムニアック」からの参照が失われます。
これは、コンテキストをAlbumDetailViewController.hに保存するコードです。
- (void)EntityRecordstableview:(UITableView *)tableView didselectrowatindexpath:(NSIndexPath *)indexPath forentity:(id)entity
{
Artist *selectedArtist = entity;
UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];
[cell setSelected:NO animated:YES];
if ([self.pickedArtists containsObject:selectedArtist]) {
[self.pickedArtists removeObject:selectedArtist];
[cell setAccessoryType:UITableViewCellAccessoryNone];
editingAlbum.artist = self.pickedArtists;
[self saveTheContext:editingAlbum.managedObjectContext];
// NSLog(@"%d",self.pickedArtists.count);
}
else {
[self.pickedArtists addObject:selectedArtist];
[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
editingAlbum.artist = self.pickedArtists;
[self saveTheContext:editingAlbum.managedObjectContext];
// NSLog(@"%d",self.pickedArtists.count);
}
}
managedObjectContext の保存に問題があるに違いないと思います。こうあるべきか
self.managedObjectContext = [(AppDelegate *)[[UIApplication sharedApplication] delegate] managedObjectContext];
[self saveTheContext:self.managedObjectContext];
それ以外の
[self saveTheContext:editingAlbum.managedObjectContext];
これを試しましたが、これも期待どおりに機能しません。