保存时的核心数据问题[关闭]

Posted

技术标签:

【中文标题】保存时的核心数据问题[关闭]【英文标题】:core data issue when saving [closed] 【发布时间】:2011-07-29 22:55:14 【问题描述】:

我已经处理这个问题将近一周了。我正在使用一个名为 restkit 的框架,我一直在尝试通过检查 RestKit 中的代码来调试它。它进一步停止执行的地方是当我试图保存到 NSManagedObjectContext 时。我附上了一个可以下载的示例测试项目here。基本上要重现错误,您必须执行以下操作:

    第一次运行应用程序,直到加载表格视图上的数据 停止应用程序 第二次运行该应用程序,您将看到一个永无止境的加载微调器

当它试图保存到位于 RKManagedObjectStore.m 上的托管对象上下文时,这基本上被卡住了,方法 save(我确实在那里放了一个断点)。我试图确保一切正常,从模型开始,等等......但我不知道这里到底发生了什么。有人可以帮忙吗?上面我放超链接的测试项目很简单……

【问题讨论】:

Test.xcdatamodeld 已损坏,因为其中没有 elementlayout 文件。 您真的希望人们下载几 MB 的文件,构建一个项目,然后浏览数千行代码来找到您的问题吗?您至少可以发布发生挂起的代码。 我已经推送了我的代码示例,所以现在它在 github 您必须将问题缩小到一小段代码,您可以将其发布在 SO 上。期望人们去异地下载代码,但是这样做是没有建设性的。 【参考方案1】:

这是一个非常奇怪的问题。我会看一下 RestKit 中包含的 DBDiscussionBoardExample,也许可以重新开始。看起来 RestKit 与 Three20 的接口中某处存在无限循环。

我也觉得奇怪的是,除非路径包含“.json”,否则您的服务器不会响应 json,即使标头要求 json。

如果你在没有 Three20 的情况下使用 RestKit,你会省去很多麻烦。除非您的应用出于某种原因需要 Three20,否则我发现它只会使代码复杂化。 RestKit 有一个非常干净的接口,可以按原样访问 CoreData。

也就是说,如果您愿意,可以在 RestKit 的 github 存储库中将此作为错误提交。

我必须手动将 Three20 添加到您的项目中才能加载。查看您的项目后,我明白为什么您不能真正指出导致问题的单个点,但您应该尝试让想要帮助的人更容易 - 考虑在您的项目中包含依赖项,或设置一个 git带有子模块的仓库。

【讨论】:

埃文,感谢您的回复。我昨天盯着 DBDiscussionBoardExample 看了一天,似乎也找不到问题所在。我让布莱克看看这个问题,但他也觉得很奇怪。我实际上想在three20之前恢复到我的项目,但是我花了很多时间将我的项目与three20移植到。以此为教训,再也不使用three20了。 您将来可能会查看 nimbus:github.com/jverkoey/nimbus。它旨在成为 Three20 的功能替代品,消除了意大利面条式的依赖以及缺乏文档和测试。它也是由从乔·休伊特手中接手 Three20 的人写的。它还没有真正准备好投入生产,但值得关注。 其实我已经关注 Nimbus 有一段时间了.. 太糟糕了 RestKit 还没有使用 nimbus【参考方案2】:

您链接到的项目不是开箱即用的。

您是否尝试过从失败的保存中打印NSError 实例。 Core Data 非常擅长解释它遇到的错误。几乎太好了,因为您可能会在该错误中浏览许多子错误。

【讨论】:

它需要在您的库中使用三个 20,因此您需要下载一个.. 我无法在保存完成之前打印错误.. 它只是不断加载 换句话说,在我调用 save 到 NSManagedObjectContext 之后,它就不会执行代码中的下一行......这就像一个无限循环挂在那里

以上是关于保存时的核心数据问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在核心数据中保存到托管对象上下文时的 SIGABRT

在核心数据中如何保存字典或数组,如字符串数据? [关闭]

浏览器关闭时的 .net 核心 cookie 身份验证

ios核心数据未保存

Swift 3 中的 JSON 图像和核心数据 [关闭]

Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话[关闭]