将输出映射到 Restkit 中的核心数据时崩溃

Posted

技术标签:

【中文标题】将输出映射到 Restkit 中的核心数据时崩溃【英文标题】:Crash while Mapping output to Core data in Restkit 【发布时间】:2012-10-27 15:52:55 【问题描述】:

我有 3 个表 userID,profile 与一种关系和 searchId,profile 与一种关系。我将两个关系的删除规则设置为 Nullify。我有两个视图控制器,我在其中使用 Restkit 从服务器映射 json 数据。

在视图控制器 1 中: 在此视图中,数据是从服务器获取并使用 Restkit 映射到数据库中。 (用户 ID -> 个人资料)

在视图控制器 2 中: 从服务器检索数据并映射到数据库(searchID -> 配置文件)。

View Controller 1 中有一个刷新按钮,它将从服务器获取数据并映射(更新)数据库。

问题:在 View Controller 1 从服务器加载数据后,我试图在 View Controller 2 中搜索从服务器加载数据的数据。我正在 ViewController 1 UI 中加载这些数据(因为 View Controller 1 结果和 View Controller 2 结果格式相似)这里没问题。

但是当我再次单击刷新按钮时,应用程序因以下错误而崩溃。我无法找出问题所在。

*** Terminating app due to uncaught exception 'NSObjectInaccessibleException', reason: 'CoreData could not fulfill a fault for '0x8b4b950 <x-coredata://EE00CF63-BECD-40FC-B531-1424930D75D6/USERID/p42>''
*** First throw call stack:
(0x2b78022 0x2d28cd6 0x230b506 0x230b0a7 0x230ac86 0x2316db9 0x2316c26 0x231a38e 0x234a5f6 0x2338df7 0x233791e 0x233765d 0x2336f0a 0x1d59d91 0x1d59895 0x1d3f33e 0x231af3f 0x231a449 0x234a5f6 0x2338df7 0x23379ec 0x233765d 0x2336f0a 0x1d59d91 0x1d59895 0x1d3f33e 0x231af3f 0x231a449 0x234a5f6 0x2338df7 0x2338d64 0x1d70d50 0x273ebd 0x274727 0x1d7463e 0x1d6d1e7 0x1d6ceea 0x29c725 0x2a78b0 0x29e0f7 0x29e773 0x29ea5a 0x28ed330 0x28eef0c 0x28eecb4 0x28ee402 0x97dd7b24 0x97dd96fe)
terminate called throwing an exception

非常感谢任何帮助

【问题讨论】:

在 Objective-C 异常中添加断点。您将看到调用堆栈和导致崩溃的行 【参考方案1】:

在您点击刷新按钮之前是否已保存所有托管对象上下文? “CoreData 无法完成错误”错误意味着 Core Data 试图查找具有特定 ID 的行,但找不到该行。当您跨线程传递托管对象(您不应该这样做,您应该传递它们的对象 ID)或跨线程传递它们的 ID 而不保存创建对象的上下文时,就会发生这种情况。

【讨论】:

以上是关于将输出映射到 Restkit 中的核心数据时崩溃的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 0.20.1 将本地 JSON 映射到 Core Data 崩溃

将 JSON 键值映射到 RestKit 0.20.1 中的核心数据属性

使用 RestKit 将一个裸露的 URL 数组映射到核心数据实体

使用 RestKit 导致核心数据崩溃的多个 RKResponseDescriptor

使用带有 ios 5 核心数据并发的 RestKit 时崩溃

当 Restkit 尝试映射时,带有字符串字段(包含 JSON 字符串)的 Json 崩溃