ios - CoreData - NSManagedObject 子对象一次仅存储在一个对象中

标签 ios swift core-data nsmanagedobject

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

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_1Item_2

但是,如果我使用该应用,并且当我查询获取 List_1 中的所有项目时,我加载的最后一个列表是 List_2,我会返回:

Item_1(只有......没有Item_2?!)就好像它被“移”出List_1并进入List_2,因为 List_2 是最后访问的包含“Item_2”的列表。

作为一对多关系一部分存储的 CoreData 对象是否一次只能存在于一个 CoreData 对象中?有人认为我的处理方式有问题吗?

感谢任何帮助!谢谢

最佳答案

列表和项目之间似乎存在一对多关系:

List <-->>Items

One to Many

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

但是您希望项目能够属于多个列表,因此您需要在列表和项目之间创建多对多关系

List <<-->>Items

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

Many to Many

希望有帮助

关于ios - CoreData - NSManagedObject 子对象一次仅存储在一个对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30610811/

相关文章:

ios - 加载 TableView 时项目出错

objective-c - 设置原始值 :forKey: and to-many relationships

core-data - 将核心数据保存到我自己在LibraryDirectory中创建的目录时崩溃

iphone - Mac 中的 Git 问题( fatal error )

swift - 如何在 mac os 终端中检查键盘语言

ios - 如何在同一个viewController中执行多个JSON连接

ios - xcode 6.1 (Swift) 中的 SIGABRT 运行时错误

objective-c - 防止核心数据持久化对象

ios - 模态视图 Controller 从自定义单元格选择问题中分离 - iOS 7

ios - 移动 Safari 中的文件上传和 EXIF