【问题标题】:CoreData - NSManagedObject SubObject Only Stored in one Object at a timeCoreData - NSManagedObject 子对象一次只存储在一个对象中
【发布时间】:2015-06-03 04:22:36
【问题描述】:

我有两个 CoreData 实体:ListItemList 包含与目标 Item 的关系。它是一对多关系(List 实体可以包含许多 Items)

List = {
  id: String,
  name: String
  items: <Item>
}

Item = {
  id: String,
  name: String
}

现在,假设我们有:
总共 2 个列表 -> List_1List_2
共 3 项:Item_1Item_2Item_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 对象中?有人认为我处理这个问题的方式有问题吗?

感谢任何帮助!谢谢

【问题讨论】:

    标签: ios swift core-data nsmanagedobject


    【解决方案1】:

    List 和 items 之间似乎是一对多的关系:

    List <-->>Items
    

    这意味着一个列表可以有很多项目,但一个项目只能有一个列表。

    但是你希望item能够属于很多list,所以你需要在list和item之间建立多对多的关系

    List <<-->>Items
    

    在这种情况下,一个列表可以有多个项目,但一个项目可以属于多个列表。

    希望对你有帮助

    【讨论】:

    • 你太棒了!这正是问题所在。感谢您清晰的解释!
    • 太棒了!我很高兴我能帮上忙,把它变成文字很有挑战性,所以我很高兴你明白了。祝你的应用好运!
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-20
    • 2013-01-21
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多