核心数据对多关系在将对象添加到父实体时创建重复项

2024-04-16

我是 Core Data 和 Objective-c 的新手。我正在开发一个项目,从 Web 服务获取 JSON 数据并将其与核心数据同步。 我成功地遵循了这个tutorial http://www.raywenderlich.com/15916/how-to-synchronize-core-data-with-a-web-service-part-1并且能够毫无问题地将 JSON 放入核心数据中。 我遇到麻烦的地方是更新与一对多关系关联的 NSSet。到目前为止,我可以让它更新,但这样做会在集合中创建重复的条目。例如,我尝试在自定义 ManagedObject Entity1 中使用 Xcode 生成的访问方法:

Entity1<-->>Entity2<-->>Entity3

我使用此代码将 Entity2 对象添加到 Entity1

    NSNumber *parentIdNumber = [record valueForKey:@"parent_id"];
    NSArray *parentIdArray = [NSArray arrayWithObject:parentIdNumber];
    NSArray *parentEntityArray = [self managedObjectsForClass:@"Entity1" sortedByKey:@"id" usingArrayOfIds:parentIdArray inArrayOfIds:YES];
    Entity1 *parentEntity = [parentEntityArray lastObject];
    [parentEntity addEntity2Object:(Entity2 *)newManagedObject];

在运行时查看每个变量后,我确定直到最后一行为止一切都正常工作。当我将 Entity2 添加到 Entity1 时,它实际上添加了该对象。但是,当我尝试添加 3 个不同的 Entity2 对象时,它似乎在 Entity1 中创建了 3 个重复的 Entity2 对象。这 3 个重复项是添加的 Entity2 的最后一个实例。

我也尝试过使用这个答案中的方法:https://stackoverflow.com/a/5370758/2670912 https://stackoverflow.com/a/5370758/2670912。看起来像这样:

    NSNumber *parentIdNumber = [record valueForKey:@"parent_id"];
    NSArray *parentIdArray = [NSArray arrayWithObject:parentIdNumber];
    NSArray *parentEntityArray = [self managedObjectsForClass:@"Entity1" sortedByKey:@"id" usingArrayOfIds:parentIdArray inArrayOfIds:YES];
    Entity1 *parentEntity = [parentEntityArray lastObject];
    NSMutableSet *entity2Set = [parentEntity mutableSetValueForKey:@"entity2"];
    [entity2Set addObject:newManagedObject];

这具有相同的重复条目结果,只是我没有获得添加的第三个对象的 3 个重复条目,而是获得了添加的第一个对象的 3 个重复条目。

有谁知道这是什么原因造成的?


我使用的代码片段被证明可以正常工作。问题是当我在 a 中显示数据时UITableView它正确地统计了实体的数量NSSet从而显示正确的细胞数量。但是,我有一个代码:

    NSSet *entitiesSet = [self.selectedEntity1 valueForKey:@"entity2"];
    NSArray *entities = [entitiesSet allObjects];
    Entity2 *entity = [entities objectAtIndex:[indexPath indexAtPosition:0]];

这会导致单元格仅显示最后一个对象NSSet导致它看起来像重复的。我通过更改解决了这个问题0 to a 1像这样:

    Entity2 *entity = [entities objectAtIndex:[indexPath indexAtPosition:1]];
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

核心数据对多关系在将对象添加到父实体时创建重复项 的相关文章

随机推荐

  • 在 Android 上启动 Chrome 作为 Web 应用程序

    我有一个非常具体的问题 我在Android平板电脑上实现了一个Web应用程序 将在一个展览上使用 Outform iDisplay 因此 Web App 必须在启动后立即启动 启动后的事情没有问题 使用 android permission
  • nginx auth_basic 时间限制

    我正在使用 nginx 和auth basic模块 但我似乎找不到一种方法来指定 身份验证 过期的时间间隔 我希望能够强制 nginx 每 6 小时询问一次密码 有没有办法做到这一点 如果不是 可接受的解决方法是什么 这可能是不可能的 似乎
  • 什么是 iOS 的渐进式 Web 应用程序解决方案 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道 iOS 设备的渐进式 Web 应用程序的解决方案是什么 因为他们的默认浏览器 SAFARI 尚不支持渐进式 Web 应用程序
  • 如何按嵌套属性对数组进行排序

    let array id 248439 name Cross Creek Ranch Creek Cove surveyStatus territoryName Fulshear subdivisionName Cross Creek Ra
  • 如何使用 Java 中的 Jersey 安全注释绕过 servlet 过滤器中的路径

    我已经使用 Jersey 实现了 REST 服务 为了提供更多安全性 我在 REST 方法中添加了球衣安全注释 PermitAll DenyAll 以下是我的 REST 服务示例 GET Path getall Produces Media
  • python/pandas 中的整数在 sqlite 中变成 BLOB(二进制)

    在 sqlite 中存储整数会导致 BLOB 二进制值 而不是 sqlite 中的 INTEGER 问题出在 Baujahr 列中的 INT 该表已创建 CREATE TABLE Objekt No INTEGER NOT NULL UNI
  • Ruby:通过正则表达式过滤数组?

    这对我来说是一个常见的 重复的习惯用法 使用正则表达式过滤数组 然后返回子数组 我的方法看起来不太像 Ruby 我来自 Java 我最终得到了很多看起来很像这样的方法 改进此代码的惯用 Ruby 方法是什么 def get all gifs
  • 使用 jQuery 选择 CSS 中具有 color:lightGreen 的元素

    如何选择具有属性的元素color lightGreen使用 jQuery 在 CSS 中 然后将其更改为 666 示例 HTML a class CorporateHyperlink href EstimateSite Estimate D
  • Eclipse 导出的 Runnable JAR 不显示图像

    运行从 Eclipse 导出的 JAR 文件时 我的图像不会加载 我的图像位于资源类包中 我也尝试过图像源文件夹 但没有成功 从 Eclipse 加载时工作完美 图像位于导出的 JAR 文件中 因此导出正常 我试过了 label setIc
  • 与经过验证的位置交互? - 谷歌地图

    好的 有很多Google 地图上标记的商家这些日子 但我无法以任何方式与这些互动 这是我掌握的信息 场地名称 声音部 地址 伦敦冈特街 103 号 SE1 6DP 谷歌的地理位置only给我 坐标 纬度 经度 格式化地址 我想要一个应用程序
  • 将 mysql 转换为 mysqli [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我对 My
  • 如何使用 NavigationLink 在 SwiftUI 中创建文本(仅文本中的一些单词)

    我正在开发适用于 iOS 的 SwiftUI 应用程序 我想以这种方式格式化文本 其中蓝色单词应该是导航链接 文本应该如何显示 我知道可以将 UIKit 实现到 SwiftUI 代码中 但是 我不明白如何以这种方式使用 UIKit 和正常工
  • 休眠并删除所有

    最好的方法是什么删除 Hibernate 中表中的所有行 如果我迭代一个集合并调用session delete 据我所知 它的表现并不好 如果我使用其他选项session createQuery delete 它不会影响持久化上下文 如果没
  • 日志文件未使用 java 中的 log4j 更新/创建

    我正在尝试使用 Java 中的 log4j 捕获日志 该可执行文件位于Linux环境中 它显示日志消息 但是 它没有写入日志文件 我正在使用 log4j xml 这就是我到目前为止所拥有的
  • 使用 iScroll 会阻止键盘在我的设备上显示

    我正在使用 iScroll 来提供 iPhone 风格的滚动 但是 当单击文本框时 键盘不会显示 在尝试查找可能的原因时 我发现删除iScroll脚本 使其正常工作 但在这种情况下我错过了滚动功能 这是 iScroll 中的错误吗 如果是
  • 无法使用 Visual C++ 编译 allegro

    我刚刚下载了 allegro 库 我创建一个新的空项目 然后添加一个源文件 我添加这行代码 include
  • 安装多个 npm 版本

    是否可以安装多个版本npm对于我正在从事或正在从事的不同项目npm安装总是全局的 Windows 10 还尝试安装不同版本https github com marcelklehr nodist https github com marcel
  • Maven 提供的作用域可以传递吗?

    我有一个祖先依赖项 它具有所提供的依赖范围 我需要将该范围传播到依赖于我的项目的任何内容 例如 假设我有SomeProjectA这取决于SomeLibraryB 我需要确定范围SomeLibraryB已提供 目前编译任何依赖于SomePro
  • 设计用于库存控制的“EAV”或“类/具体表继承”数据库

    我正在为一个建设项目开发库存控制系统 店员负责添加新库存并将其分发给员工 从员工处返还 这些物品 以及它们的属性 将会非常多样化 例如钢制品 服装 设备 机械 工具等 我的问题是是否要去类 具体表继承 https stackoverflow
  • 核心数据对多关系在将对象添加到父实体时创建重复项

    我是 Core Data 和 Objective c 的新手 我正在开发一个项目 从 Web 服务获取 JSON 数据并将其与核心数据同步 我成功地遵循了这个tutorial http www raywenderlich com 15916