Core data coredata-关系无法正常运行

Core data coredata-关系无法正常运行,core-data,relationship,nsmanagedobject,nsmanagedobjectcontext,Core Data,Relationship,Nsmanagedobject,Nsmanagedobjectcontext,这是coredata体系结构的结构 在将条目添加到“艺术家”之后,将它们用于新添加的“相册”条目是完美的 但问题如img-2和img-3所示,在将“迈克尔·杰克逊”分配到“失眠症2010”专辑后,又将同一位艺术家添加到“婴儿ft ludacris”中,从而失去了专辑“失眠症”的参考 这是我在AlbumDetailViewController.h - (void)EntityRecordstableview:(UITableView *)tableView didselectrowatindex

这是coredata体系结构的结构

在将条目添加到“艺术家”之后,将它们用于新添加的“相册”条目是完美的

但问题如img-2和img-3所示,在将“迈克尔·杰克逊”分配到“失眠症2010”专辑后,又将同一位艺术家添加到“婴儿ft ludacris”中,从而失去了专辑“失眠症”的参考

这是我在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];
我试过了,但也没有达到预期效果


每个艺术家都可以有许多专辑,但根据模型,每个专辑都可以包含许多艺术家。多对多关系应颠倒或替换为多对多类型(每个专辑可以包含多个艺术家,每个艺术家可以有多个专辑)


专辑-歌曲关系类型也可能是以后的问题…

每个艺术家都可以有许多专辑,但根据模型,每个专辑都可以包含许多艺术家。多对多关系应颠倒或替换为多对多类型(每个专辑可以包含多个艺术家,每个艺术家可以有多个专辑)


专辑与歌曲的关系类型也可能是以后的问题…

我已经更新了您的代码。请检查相同的。他们之间的关系是艺术家专辑之间的问题。一定是多对多

你的专辑艺术家之间的关系是1对多。因此,如果您要为多个相册选择艺术家,则它将覆盖其值。请检查您的数据库中是否有相同的内容


代码:

我已更新了您的代码。请检查相同的。他们之间的关系是艺术家专辑之间的问题。一定是多对多

你的专辑艺术家之间的关系是1对多。因此,如果您要为多个相册选择艺术家,则它将覆盖其值。请检查您的数据库中是否有相同的内容


代码:

嘿,谢谢兄弟。!谢谢你更新我的代码。就像你为我准备了水果盘一样。:)非常感谢你,谢谢你,兄弟。!谢谢你更新我的代码。就像你为我准备了水果盘一样。:)非常感谢你嘿,谢谢你,伙计。我对答案投了赞成票,以便作出很好的解释。我会做你建议的改变。非常感谢。嘿,谢谢你,伙计。我对答案投了赞成票,以便作出很好的解释。我会做你建议的改变。谢谢。