如何在 iOS 上的 Core Data 中设置新创建的关系?
Posted
技术标签:
【中文标题】如何在 iOS 上的 Core Data 中设置新创建的关系?【英文标题】:How can I set up a newly created relationship in Core Data on iOS? 【发布时间】:2010-11-04 19:01:11 【问题描述】:所以我在现有的 iPhone 应用程序中使用 Core Data,并设置了两个实体:Person 和 Item。我的应用程序导航的根视图(当前)显示人员列表,您可以从那里向下钻取到项目。简而言之,层次结构如下所示:
人物 -> 物品
我想在层次结构中的 Person 上方添加一个新实体,称为 List:
列表 -> 人物 -> 项目
此外,我希望在启动时为他们创建用户的第一个列表,并为用户已添加的任何人分配到该列表。
我熟悉 Core Data 的轻量级迁移和版本控制功能,所以我想我知道如何添加新实体和关系,但我不知道如何:
如果他们之前从未使用过列表功能,则在应用启动时创建列表记录
将所有现有人员记录设置为属于该新列表。
一种快速而肮脏的方法是向我的应用程序委托的 applicationDidFinishLaunching 方法添加一些代码,该方法通过 (1) 检查是否有任何列表,(2) 如果没有,则创建默认列表,(3 ) 从我的数据存储中获取所有现有的人员,(4) 将每个人员的列表属性设置为新创建的默认列表,最后 (5) 保存这些更改。
我的问题是:有没有更快或更简单的方法来完成这一切?
【问题讨论】:
【参考方案1】:这几乎就是您想要做的。使用NSFetchRequest
查看是否存在任何Lists
s。如果没有,请创建一个。然后再次请求获取所有Person
s。在这里,我将创建一个包含所有Person
s 的NSSet
并将其分配给List
的people
属性,而不是分配每个Person
的list
属性。你确实创建了一个逆属性,对吧?
这实际上是一个非常轻量级的操作,全部收费,所以我不会太担心性能。除非您有成百上千个 Person
对象,否则您的用户可能根本不会注意到。
【讨论】:
好主意,我会这样尝试。谢谢!以上是关于如何在 iOS 上的 Core Data 中设置新创建的关系?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Mac 应用程序中设置初始 Core Data 存储?
使用 docker 客户端在 python 中设置新容器时权限被拒绝错误