CoreData - NSManagedObject 子对象一次只存储在一个对象中
CoreData - NSManagedObject SubObject Only Stored in one Object at a time
我有两个 CoreData 实体:List
和 Item
。 List
包含与目的地 Item
的关系。这是一个对多关系(List
个实体可以包含许多 Item
个)
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_2
,当我查询以获取 List_1
中的所有项目时,我返回:
Item_1
(只有....没有 Item_2
?!)就好像它是 "moved" 从 List_1
进入 List_2
因为 List_2
是访问的最后一个包含 `Item_2.
的列表
作为一对多关系的一部分存储的 CoreData 对象是否一次只允许存在于一个 CoreData 对象中?有人认为我的处理方式有问题吗?
感谢任何帮助!谢谢
看来你的List和items是一对多的关系:
List <-->>Items
这意味着一个列表可以有很多项目,但一个项目只能有一个列表。
但是您希望项目能够属于多个列表,因此您需要在列表和项目之间创建多对多关系
List <<-->>Items
在这种情况下,一个列表可以有多个项目,但一个项目可以属于多个列表。
希望对你有所帮助
我有两个 CoreData 实体:List
和 Item
。 List
包含与目的地 Item
的关系。这是一个对多关系(List
个实体可以包含许多 Item
个)
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_2
,当我查询以获取 List_1
中的所有项目时,我返回:
Item_1
(只有....没有 Item_2
?!)就好像它是 "moved" 从 List_1
进入 List_2
因为 List_2
是访问的最后一个包含 `Item_2.
作为一对多关系的一部分存储的 CoreData 对象是否一次只允许存在于一个 CoreData 对象中?有人认为我的处理方式有问题吗?
感谢任何帮助!谢谢
看来你的List和items是一对多的关系:
List <-->>Items
这意味着一个列表可以有很多项目,但一个项目只能有一个列表。
但是您希望项目能够属于多个列表,因此您需要在列表和项目之间创建多对多关系
List <<-->>Items
在这种情况下,一个列表可以有多个项目,但一个项目可以属于多个列表。
希望对你有所帮助