核心数据-existingObjectWithID:错误:导致错误133000

2023-12-24

我的应用程序使用 Core Data(在 Magical Record 的帮助下)并且使用大量多线程NSOperation.

当然我很小心只路过NSManagedObjectID线程/操作之间。

现在,要返回操作中相应的托管对象,我使用-existingObjectWithID:error: thus:

Collection *owner = (Collection *)[localContext existingObjectWithID:self.containerId error:&error];

但我得到的却是零error说这是一个错误#13300:NSManagedObjectReferentialIntegrityError.

以下是文档中关于此错误的说明:

NSManagedObjectReferentialIntegrityError
Error code to denote an attempt to fire a fault pointing to an object that does not exist.
The store is accessible, but the object corresponding to the fault cannot be found.

在我的例子中,这不是真的:该对象存在。事实上,如果我遍历所有实例Collection实体具有NSFetchRequest,我在其中找到了它,并且它NSManagedObjectID正是我传递给的那个-existingObjectWithID:error:.

此外,如果我使用-objectWithID:相反,我得到了一个正确的对象就好了。

所以我缺少一些东西。以下是一些额外的观察/问题:

  • “一个不存在的物体”:这句话中的“存在”是什么意思? “存在”在哪里?那时它肯定“存在”在我的核心数据存储中。
  • “找不到与故障对应的对象”:这句话中的“找到”是什么意思? “发现”在哪里?那时它肯定会在我的核心数据存储中“找到”。

所以也许我错过了一些关于什么的事情existingObjectWithID:error:做?文档说:

If there is a managed object with the given ID already registered in the context, that object is returned directly; otherwise the corresponding object is faulted into the context.
[...]
Unlike objectWithID:, this method never returns a fault.

这对我的问题没有帮助。我不介意让我的物品完全有缺陷,而不是有缺陷。事实上,当我访问对象属性时,其中的任何错误都会在下一个代码行中触发。

  • 一个现实的场景会是什么?NSManagedObjectReferentialIntegrityError?

感谢您的任何启发。


问题是NSManagedObjectID你通过是暂时的。您可以拨打电话进行检查NSManagedObjectID's isTemporaryID方法。来自文档:

返回一个布尔值,指示是否 接收者是临时的。

大多数对象 ID 返回 NO。新对象插入到 托管对象上下文被分配一个临时 ID,该 ID 会被替换 一旦对象被保存到持久性存储中,就具有永久的。

您应该首先保存更改到持久存储,然后才获得一个永久 ID 来传递给其他上下文。

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

核心数据-existingObjectWithID:错误:导致错误133000 的相关文章

  • 如何防止“CoreData无法完成故障”?

    我们偶尔会收到 CoreData 无法完成故障 的信息 我们已阅读 Apple 文档 但不清楚允许保留哪些内容 我们非常小心地为每个线程创建一个上下文等 但是 我们的应用程序正在做的一件事是我们在 UIViewController 上保留
  • iPhone |从头开始构建新版本的核心数据迁移

    我正在开发应用程序更新 这个版本完全是从头开始构建的 并且具有全新的功能coreData模型架构 我需要写coreData从旧模型迁移 我一直在寻找资源来写作coreData迁移但都需要旧模型文件 由于这个版本是全新的 所以我没有旧的模型架
  • TextKit:Xcode 中的编辑器占位符功能是如何实现的?

    我深入研究了 TextKit 想知道编辑器占位符是如何在 Xcode 代码编辑器中实现的 您也可以自己尝试一下并输入以下内容 lt Hello gt 它会自动变成占位符 Xcode 编辑器是使用 TextKit 构建的 经过一番研究 我想出
  • Cocoa 脚本:返回“null”与“缺失值”

    看来 AppleScript 知道这个特殊值null 如何从基于 Cocoa 脚本的应用程序中为可编写脚本的属性返回这样的值 如果我回来nil NULL or NSNull对于来自我的基于 Cocoa 脚本的应用程序的可编写脚本的属性 ge
  • 如何使用 Objective-C 使文件在 Finder 中不可见

    如果可能的话 我需要使用 Objective C 或使用 C 调用将文件隐藏在查找器中以及聚光灯下 Thanks 您可以使用 chflags path to file UF HIDDEN 隐藏任何文件 See 手动更改标志 2 https
  • 导入 CoreData 时检查重复项

    我正在使用 RestKit 将数据导入到核心数据存储中 并且需要检查重复项 如果该商品已在商店中 我想用最新的属性更新它 如果它是一个新项目 我想创建它 导入速度很慢 所以我使用了 Instruments 发现导入的最长部分是检查该项目是否
  • RestKit 对象与外键的映射关系

    RestKit 是否可以在不将外键存储为属性的情况下连接关系 即直接从 JSON 中的键路径存储 特别是 我有一个 Job has many Rooms 关系 房间的 JSON 不包含作业 而是分别加载 job id 1 name John
  • 使用每个实体包含许多图像的核心数据?

    我是 Core Data 的新手 正在开发我的第一个个人 iOS 应用程序 我有一个实体 我们称之为Car 其中有一个缩略图以及与其关联的其他图像库 数据使用同步到在线服务ASIHTTPRequest and JSONKit 该应用程序不需
  • NSFetchedResultsChangeUpdate 被触发而不是 NSFetchedResultsChangeDelete

    我有一个 NSFetchedResultsController 通过以下方式启动 NSEntityDescription myEntity NSEntityDescription entityForName MyEntity inManag
  • 我可以编辑 UIImage 属性 CGImage 的像素吗

    UIImage有一个只读属性CGImage 我必须将其像素读取到内存块并对其进行编辑 然后制作一个新的 UIImage 来替换旧的 我想知道是否有办法绕过只读属性并直接编辑这些像素 Thanks 谢谢大家 我找到了一种方法来做到这一点 使用
  • 以编程方式强制 Cocoa 应用程序以 32 位模式启动

    我有一个 Cocoa 应用程序 通常在任何支持此架构的 Mac 上以完整 64 位模式运行 现在我有一个外部 API 只能作为 32 位插件加载到主程序中 该 API 适用于第三方输入设备 只有一小部分用户会购买该设备 但这对于那一小部分用
  • Objective-C 类别导致无法识别的选择器

    我的项目有一个UIImage我想从另一个类调用的类别函数 我正确导入了图像类别的头文件 并且在没有警告的情况下编译了项目 问题是当我打电话时UIImage类别函数我看到一个无法识别的选择器错误NSInvalidArgumentExcepti
  • 带圆角的 NSVisualEffectView

    如何在 OS X 中显示带圆角的 NSVisualEffectView 我添加 NSVisualEffectView 的代码 let visualEffectView NSVisualEffectView frame NSMakeRect
  • 您希望 2 年前就知道哪些 Cocoa/Core Foundation 辅助函数?

    我刚刚在 NSGeometry h 中发现了 NSRect 辅助函数 即 NSMidX NSMaxX 等 这些将使一些重复编码变得更加容易 我了解 NSMakeRect NSMouseInRect NSOffsetRect 和许多其他函数
  • NSFetchRequest 不返回任何内容

    任何人都可以发现为什么这不返回任何 ManagedObjects 吗 我试图将以下内容添加到 ATNSManagedObject EasyFetching 类中 但获取结果不返回任何内容 如果我在 EasyFetch 类之外获取这些对象 我
  • 以编程方式设置文本后,自动链接检测在 NSTextView 中不起作用

    我有一个启用了自动链接检测的 NSTextView 当我以编程方式设置文本时 myTextView setString http google com 它不会自动显示链接 如果我在文本视图中输入任何内容 它将添加链接 我希望它添加链接 不得
  • 在 Cocoa 中声明对象时,我应该将它们设置为 nil 吗?

    假设我想创建一个实例NSString 根据另一个变量的值初始化为某个值 通常情况下 我会这样做 NSString string if foo 1 string Foo is one else string Foo is not one 然而
  • 如何将主菜单添加到 xib

    我从 xib 文件中删除了主菜单 我怎样才能重新创建它而不需要处理它 另一个新创建的xib 我似乎找不到如何告诉 IB 我从对象库添加的菜单实际上是主应用程序菜单 你不能 您过去可以简单地连接mainMenu菜单的出口 但从 Xcode 4
  • 快速以编程方式清除 NSView

    我有一个NSView连接到自定义类 该视图上有一些图画 class LineDrawer NSView var linear NSBezierPath var storage NSUserDefaults standardUserDefau
  • 似乎无法在 NSMenuItem 上 setEnabled:NO

    我已经子类化了NSMenu并连接了一堆NSMenuItem通过界面生成器 我已经通过调试器进行了测试 看看它们确实得到了初始化 菜单设置为不自动启用项目 仍然当我将任何 NSMenuItem 设置为 myMenuItem setEnable

随机推荐