【问题标题】:coredata- relationship failing to behave properlycoredata-关系无法正常运行
【发布时间】:2013-04-09 09:44:52
【问题描述】:

这是 coredata 架构的结构。

将条目添加到“艺术家”后,将它们用于新添加的“专辑”条目效果很好。

但问题如图 2 和 3 所示,在将“michael jackson”分配给“Insomniac 2010”专辑然后将同一艺术家添加到“Baby ft ludacris”后,失去了专辑“Insomniac”的引用.

这是我在 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];

我试过了,但这也没有按预期工作。

You can find my source code here

【问题讨论】:

    标签: core-data relationship nsmanagedobject nsmanagedobjectcontext


    【解决方案1】:

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

    专辑艺术家之间的关系是一对多。因此,如果您为多个专辑选择艺术家,那么它将覆盖其值。请检查您的数据库是否相同。

    代码:Click Here

    【讨论】:

    • 嘿,谢谢兄弟!感谢您更新我的代码。就像你为我准备了果盘一样。 :) 真的非常感谢你
    【解决方案2】:

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

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

    【讨论】:

    • 嘿,谢谢哥们。赞成答案以获得很好的解释。我会根据您的建议进行更改。非常感谢。
    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 2011-04-10
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-22
    • 2015-12-08
    相关资源
    最近更新 更多