CoreData - NSManagedObject 子对象一次只存储在一个对象中
Posted
技术标签:
【中文标题】CoreData - NSManagedObject 子对象一次只存储在一个对象中【英文标题】:CoreData - NSManagedObject SubObject Only Stored in one Object at a time 【发布时间】:2015-06-03 04:22:36 【问题描述】:我有两个 CoreData 实体:List
和 Item
。 List
包含与目标 Item
的关系。它是一对多关系(List
实体可以包含许多 Item
s)
List =
id: String,
name: String
items: <Item>
Item =
id: String,
name: String
现在,假设我们有:
总共 2 个列表 -> List_1
和 List_2
共 3 项:Item_1
、Item_2
和 Item_3
。
列表如下:
List_1 =
id: "1001",
name: "Foo"
items: <Item_1, Item_2>
List_2 =
id: "1002",
name: "Bar"
items: <Item_2, Item_3>
当我对 CoreData 进行提取时,我遇到了不一致的结果,并且不一致是基于应用程序中加载的最后一个 List
。
例如,如果我使用该应用程序并且当我查询以获取 List_1
中的所有项目时,我加载的最后一个列表是 List_1
,我会返回:
Item_1
, Item_2
但是,如果我使用该应用程序并且当我查询以获取 List_1
中的所有项目时,我加载的最后一个列表是 List_2
,我将返回:
Item_1
(仅....否 Item_2
?!)好像它已从 List_1
“移出”并移入 List_2
,因为 List_2
是访问过的最后一个包含 ` 的列表项目_2。
作为一对多关系的一部分存储的 CoreData 对象是否一次只允许存在于一个 CoreData 对象中?有人认为我处理这个问题的方式有问题吗?
感谢任何帮助!谢谢
【问题讨论】:
【参考方案1】:List 和 items 之间似乎是一对多的关系:
List <-->>Items
这意味着一个列表可以有很多项目,但一个项目只能有一个列表。
但是你希望item能够属于很多list,所以你需要在list和item之间建立多对多的关系
List <<-->>Items
在这种情况下,一个列表可以有多个项目,但一个项目可以属于多个列表。
希望对你有帮助
【讨论】:
你太棒了!这正是问题所在。感谢您清晰的解释! 太棒了!我很高兴我能帮上忙,把它变成文字很有挑战性,所以我很高兴你明白了。祝你的应用好运!以上是关于CoreData - NSManagedObject 子对象一次只存储在一个对象中的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 使用 CoreData 的 dispatch_async 保留周期
将对象从一个 Core Data UITableView 移动到另一个?
CoreData(iOS):是不是需要创建数据库才能使用CoreData?coredata可以对简单的平面文件进行操作吗? [关闭]