gpt4 book ai didi

ios - 从 CoreData 关系中获取错误实体的对象

转载 作者:行者123 更新时间:2023-12-01 20:00:45 25 4
gpt4 key购买 nike

我有一个相当大的 CoreData 模型,它突然表现得很奇怪。存在三个相关实体:

  • 用户
  • 故事
  • 集团
  • User有一个名为 stories 的一对多关系至 Story对象和一对多关系 groupsGroup对象。两者也都有适当的逆。我使用 mogenerator 为所有属性和关系生成方便的访问器。两者都是有序的对多关系。
    现在,当我向用户对象询问其 groups 时,有时会发生这种情况。 (如 user.groups )我实际上得到了一组 NSOrdered 的 XNGStory 对象。在我观察到的少数情况下,它们与 user.stories 返回的对象相同。 .这两个集合不一样(不同的指针),但它们的内容是(我通过调用 array] valueForKeyPath:@"objectID.URIRepresentation"] 对它们进行检查,并在两种情况下都以相同的顺序获得了相同的 URI)。
    感觉就像我的应用程序中有某种方式将故事存储在 groups 中关系,但我检查了代码,只有与组相关的类触及 groups关系和只有故事相关的类(class)触及 story -关系。两者之间也没有交互或关系,它们在应用程序的完全独立的部分中使用,所以我不知道这种数据损坏是如何发生的。
    是否有任何理由可能会发生这种数据损坏?当我意外地将对象存储在错误的关系中时,我本来希望 CoreData 会提示。
    还有一件事:到目前为止,我们只能在 iOS 10 上重现它。
    我们尝试过的事情:
  • 我们首先怀疑存在内存问题(因为错误类型的对象出现在不应该出现的位置),但在启用 Address Sanitizer 和 NSZombies 的情况下运行并没有发现任何问题。此外,一旦问题发生,它会在应用程序重新启动时持续存在,并且使用调试器在对象中四处寻找也显示出一致的(错误的)数据模型,因此它不仅仅是一个错误的指针。
  • 停用 WAL (问题仍然存在)
  • 使用 Core Data Editor 崩溃后查看 sqlite 文件(有和没有 WAL) : 它显示 groups 的组对象关系,所以在 sqlite-database-level 上似乎一切都很好 ->从文件中加载时,关系会以某种方式混淆。
  • 最佳答案

    据我所知,这似乎是 iOS 10 的错误。

    我们在使用 Core Data 的应用程序中遇到了类似的问题 - User 对象具有关系 Addresses(到 Address 对象)和 Friends(到其他 User 对象)。

    由于某些原因,iOS 10 Core Data 下偶尔会选择返回 Friends 关系中的 Address 对象。

    我们已经对 iOS 9 进行了回归测试,并且没有出现此问题。

    在 Open Radar 上有一个针对同一问题的开放错误 - 26826183 .有趣的是,我们只是在 10.0.2 下才开始看到这个问题,但 Radar 报告是基于早期的 iO​​S 10 Beta。

    关于ios - 从 CoreData 关系中获取错误实体的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39982189/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com