我正在寻求有关 CoreData 和一般实体的帮助。就我的问题而言,假设我有一个专辑数据库。我有一个名为专辑的实体,具有名称、艺术家、年份、专辑艺术等属性。
现在,假设我希望能够为这张专辑创作歌曲。我在想我应该为歌曲设置一个单独的实体,并与之建立一对多的关系。但是,我不确定我将如何做到这一点。
由于我有不同的专辑,其中包含不同的歌曲,我想将专辑 A 中的歌曲与专辑 B 分开。现在,我可以在歌曲数据库中为它所属的专辑留一行,但这是最有效的方法去做这个。如果我有重复的专辑名称怎么办。我尝试使用创建时间和名称创建专辑名称的唯一“哈希”,但有没有更好的方法。
我还需要一种更好的方法来处理删除相册时的删除操作。
在不使用一对多关系的情况下,我能够创建两个独立的实体,专辑和歌曲,它们没有链接在一起。但是,当我创建一个新专辑时,它会加载一个新的 View Controller 并将“哈希”时间戳专辑名称传递给 View Controller 。然后,当我创建一首新歌曲时,它使用该哈希时间戳专辑名称作为歌曲实体中的一行。这样,当我查看专辑中有哪些歌曲时,我只需设置一个 NSPredicate 以仅显示包含哈希时间戳的查询。但是,删除是一个问题,因为它们没有关系。
- 我应该使用“一对多关系”吗?
- 我应该如何判断一首歌是否属于某个专辑?
- 如果是多张同名专辑怎么办?
- 如何处理删除?
如果有人能提供任何这些的答案、代码或教程……将不胜感激。
Best Answer-推荐答案 strong>
所以,希望这个简短的回答能让你走上正轨:
一对多的关系适用于专辑->歌曲。至于如何创建它 - 假设您有两个实体,一个名为 "album",一个名为 "song"。在 XCode 的数据模型窗口中,选择您的“专辑”实体并创建一个新关系(点击属性表中的 + 按钮)。
给你的关系一个名字,决定它是否是可选的(假设不是,因为每张专辑中必须至少有一首歌),然后选择“song”作为你的目标实体.最后,单击标记为“To-Many relationship”的复选框。就是这样!
现在您已经建立了关系,当您删除专辑本身时,与专辑关联的任何歌曲都将被删除。
关于问题3:“如果有多个同名专辑怎么办”。这是相当常见的情况。使用英文字符串作为您的主要标识符是非常不寻常的。您希望为每张专辑拥有某种唯一 ID——这将是您的主键/唯一键。如果您对这意味着什么感到困惑,那么在继续使用 Core Data 之前,您应该研究一些更基本的数据库概念以便更好地处理它。
关于iphone - 使用多个实体进行 CoreData 编程,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/4647666/
|