• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 使用多个实体进行 CoreData 编程

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:14:52 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

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

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

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

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

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

如果有人能提供任何这些的答案、代码或教程……将不胜感激。



Best Answer-推荐答案


所以,希望这个简短的回答能让你走上正轨:

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

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

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

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap