反映 PS 中每个现有记录的 coredata-MO 修改

Posted

技术标签:

【中文标题】反映 PS 中每个现有记录的 coredata-MO 修改【英文标题】:coredata-MO modification reflecting for each existing records in PS 【发布时间】:2013-03-15 07:22:11 【问题描述】:

我在互联网上找到了许多关于核心数据的教程和文章,但我正在制作实时且对初学者更有用的示例应用程序。你可以找到sample code here。

核心数据结构是这样的。

我为艺术家、专辑和歌曲制作条目。 但问题是稍后对已添加的艺术家进行的编辑不会反映到专辑中。

我错过了什么?

为了重现此问题,我请求下载该项目并运行它。

为艺术家、专辑和歌曲添加一些条目。 然后转到艺术家选项卡并编辑一些艺术家条目。 现在转到相册选项卡。您将看到相关专辑条目的艺术家名称与旧名称相同。

这就是问题所在。理想情况下,我应该在那里看到新条目。

我想要一些真正的方法来实现这一目标

【问题讨论】:

你使用多线程吗?附言不想下载压缩包、解压、搜索代码,最好提供一些技术细节或将代码放在其他地方,这样我们可以一键找到,不浪费时间。 没有多线程。我的问题是我在代码中缺少什么?我还没有写出会自动反映这些变化的东西。很抱歉给您带来不便。我没有看到任何相关代码可以在这里发布。 【参考方案1】:

不确定有关重现该问题的说明,因为“专辑”选项卡不显示艺术家的姓名,直到您单击“流派”按钮,然后它才能正确显示艺术家的姓名。我看到错误的地方是转到“歌曲”选项卡。

通过简要了解发生的情况,我相信这个问题是因为您通过保存在名为 songArtist 的歌曲中的 NSString 来显示艺术家姓名,而不是从引用的艺术家实体中获取艺术家姓名。

CoreData 不会仅仅因为您更改了 Artist.artistName 而更新 song.artistName NSString。它不知道这两个字符串是相关的。您需要自己进行更新。

或者,您需要刷新来自 Song 实体的信息以设置 Song 的 ArtistName 的新变量。

希望这是有道理的。

/* 更新 */

您的歌曲引用了一位艺术家,但它是一对多的关系。我一直认为一首歌曲只有一个艺术家,所以取消你的 CoreData 关系中的多对多关系。在这种情况下,您应该通过 song.artist.artistName 显示艺术家姓名。然后,当艺术家实体更新时,歌曲将引用艺术家,而艺术家又具有正确的信息。

【讨论】:

+1 表示插图。我明白了,我在 Album 选项卡上显示艺术家姓名,从 NSString 存储到来自 Album 实体的 albumGenre 属性中,而不是从引用中获取艺术家姓名艺术家实体。同样,对于 Song 选项卡,专辑名称来自 NSString,存储在 Song 实体的 songAlbum attr 中。所以我的问题是我应该怎么做?如何通过引用 Artist 实体在 Album 选项卡列表中显示艺术家姓名。 我得到了更新答案背后的逻辑。所以尝试一下,我在 SongAlbum 之间有相同的关系结构。一首歌只属于一张专辑。我试着写Album *referencedAlbum = song.album;NSString *refAlbumName = referencedAlbum.albumName; 但失败了。 xcode 未在智能中显示 referencedAlbum.albumName @hpiosCoder 那么你可能还没有导入 Album.h (#import "Album.h") 接受了答案。太棒了……只是爱你……我错过了#import "Album.h"。同样在SongDetailViewController.m 文件中,我错过了分配[editingSong setAlbum:selectedAlbum];。无论如何.. DonnaLea 的出色帮助。我希望我能再投票一次。 :) @hpiOSCoder 如果您有多个实体的 NSSet,那么您将遍历并从每个实体中获取所需的值。例如。循环遍历艺术家的 NSSet,您将创建一个 NSMutableString 并将每个作者姓名附加到该字符串,以便您可以在一个地方显示所有艺术家姓名。这实际上取决于您为何拥有一对多关系以及您希望如何对待他们,这就是一个例子。

以上是关于反映 PS 中每个现有记录的 coredata-MO 修改的主要内容,如果未能解决你的问题,请参考以下文章

如何根据 BigQuery 中的另一个现有行为每个用户添加记录?

在插入之前检查现有记录

Phpmyadmin - 将新列导入现有记录

ps:图像格式的选择

如何替换核心数据实体的现有记录

ps要使用魔术工具在现有选区的基础上继续增加选区,应该是哪个按钮?