首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS 5.0模拟器中使用UIManagedDocument时出现NSFileCoordinator错误

在iOS 5.0模拟器中使用UIManagedDocument时出现NSFileCoordinator错误
EN

Stack Overflow用户
提问于 2012-01-11 05:45:33
回答 5查看 1.6K关注 0票数 1

我使用的是iOS 5.0中的UIManagedDocument,在模拟器上运行该应用程序,使用的是OSX10.6下的XCode 4.2。有问题的代码如下所示:

代码语言:javascript
复制
if (![[NSFileManager defaultManager] fileExistsAtPath:[self.photoDatabase.fileURL path]]) {
    // does not exist on disk, so create it
    [self.photoDatabase saveToURL:self.photoDatabase.fileURL forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success) {
        [self setupFetchedResultsController];
        [self fetchFlickrDataIntoDocument:self.photoDatabase];

    }];
} else if (self.photoDatabase.documentState == UIDocumentStateClosed) {
    // exists on disk, but we need to open it
    // *** the following line generates the message ***
    [self.photoDatabase openWithCompletionHandler:^(BOOL success) {
        //[self setupFetchedResultsController];
        }];
} else if (self.photoDatabase.documentState == UIDocumentStateNormal) {
    // already open and ready to use
    [self setupFetchedResultsController];
}

运行标记的行会在日志中创建以下消息:

代码语言:javascript
复制
2012-01-10 22:33:17.109 Photomania[5149:4803] NSFileCoordinator: A surprising server error was signaled. Details: Connection invalid

消息发送后,UIManagedDocument可能会工作,也可能不会工作--我还没有发现决定这一点的情况。

我非常确定代码是正确的,因为它实际上是斯坦福大学CS193p课程中的代码示例之一。整个示例可以在他们的网站上下载,直接链接到代码:http://www.stanford.edu/class/cs193p/cgi-bin/drupal/system/files/sample_code/Photomania_0.zip

此外,代码在设备本身上运行良好,不会生成“令人惊讶的”消息,也不会运行随后出现的所有代码。

我在谷歌上没有找到任何东西,苹果开发人员页面上也没有。重新启动模拟器或XCode,或者同时重新安装它们并不会改变行为。

有什么想法吗?

EN

回答 5

Stack Overflow用户

发布于 2012-03-02 02:19:31

我只能说这种情况在我身上已经发生过几次了。对我来说,在更新dataModel之后我很懒,到目前为止,每次我收到这个错误都是因为我更改了我的数据模型。通常,我需要做的就是从模拟器中删除我的应用程序,然后重新运行它,结果总是很好。希望这能对外面的人有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2012-03-07 05:54:14

我想我已经找到答案了。看起来只有在模拟器上几秒钟后,UIManagedDocument的自动保存才开始生效。

因此,我在模拟器上最小化了应用程序,按下主页按钮,然后单击图标再次将其最大化。然后我在模拟器中终止了应用程序。

当我重新启动应用程序时,数据库已经加载。错误仍然出现-因为文档处于“已关闭”状态(这是正常的-这就是为什么CS193P要求调用openWithCompletionHandler),但我的启动数据被保留。不幸的是,在终止应用程序之前,我必须执行最小化/最大化例程,否则这些更改将在下次启动时被丢弃。

您能确认这是您能够重新创建的行为吗?至少为了测试的目的,这应该是一个足够好的技巧来使用。

票数 1
EN

Stack Overflow用户

发布于 2012-02-19 14:42:12

尝试升级到最新的iOS 5.1。我不认为带有iCloud的UIManagedDocument在5.0中能够可靠地工作。这是我的经验。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8810952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档