gpt4 book ai didi

iphone - 具有多个实体的 CoreData 编程

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:19:33 26 4
gpt4 key购买 nike

我正在寻求有关 CoreData 和一般实体的帮助。就我的问题而言,假设我有一个专辑数据库。我有一个名为 albums 的实体,其中包含名称、艺术家、年份、专辑封面等属性。

现在,假设我希望能够为这张专辑创作歌曲。我在想我应该为歌曲创建一个单独的实体,并与它建立一对多的关系。但是,我不确定具体该怎么做。

因为我有不同的专辑,其中包含不同的歌曲,我想将专辑 A 和专辑 B 中的歌曲分开。现在,我可以在歌曲数据库中有一行它属于哪个专辑,但这是最有效的方法去做这个。如果我有重复的相册名称怎么办?我尝试使用创建时间和名称创建专辑名称的唯一“哈希”,但有没有更好的方法。

我还需要一种更好的方法来处理删除相册时的删除问题。

在不使用一对多关系的情况下,我能够创建两个独立的实体,专辑和歌曲,它们没有链接在一起。但是,当我创建一个新相册时,它会加载一个新的 View Controller 并将带有时间戳的“哈希”相册名称传递给 View Controller 。然后,当我创建一首新歌时,它会使用经过哈希处理的带有时间戳的专辑名称作为 Songs 实体中的一行。这样,当我查看专辑中的歌曲时,我只需将 NSPredicate 设置为仅显示包含哈希时间戳的查询。但是,删除是一个问题,因为它们没有关系。

  1. 我应该使用“一对多关系”吗?
  2. 我应该如何判断一首歌曲是否属于某个专辑?
  3. 如果他们有多个同名专辑怎么办?
  4. 如何处理删除?

如果有人可以为其中任何一个提供答案、代码或教程……将不胜感激。

最佳答案

因此,希望这个简短的回答能让您走上正轨:

一对多关系适用于专辑->歌曲。至于如何创建它 - 假设您有两个实体,一个名为“专辑”,一个名为“歌曲”。在 XCode 的数据模型窗口中,选择您的“相册”实体并创建一个新关系(点击属性表中的 + 按钮)。

给你的关系一个名字,决定它是否是可选的(人们会假设不是,因为每张专辑必须至少有一首歌),然后选择“歌曲”作为你的目标实体.最后,单击标记为“对多关系”的复选框。就是这样!

现在您已经建立了关系,当您删除专辑本身时,与专辑关联的所有歌曲都将被删除。

关于问题3:“如果有多个同名相册怎么办”。这是相当常见的情况。使用英文字符串作为您的主要标识符是非常不寻常的。您希望每张专辑都有某种唯一 ID——这将是您的主键/唯一键。如果您对这意味着什么感到困惑,您应该研究一些更基本的数据库概念,以便在继续使用 Core Data 之前更好地处理它。

关于iphone - 具有多个实体的 CoreData 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4647666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com