UIDocument没有保存?

时间:2014-03-11 17:29:04

标签: ios objective-c save uidocument

无论我尝试什么,这都不起作用......

我正在尝试使用UIDocument在本地保存我的(文本)文件。当我创建一个文件(即它没有加载)时,它保存得很好。 但是,如果我通过打开文件然后保存来加载我的文件,它就不会保存。

编辑:我尝试在应用进入后台时保存我的文档。然而,似乎该应用程序实际上已经完成了保存"我进入前台时的文件。我的应用程序是否不允许在后台保存文档?

我已检查过我的网址,但这些网址都有效。

以下是从头开始制作文档的代码:

document = [[MyDocumentClass alloc] initWithFileURL:fileURL];
之前已经制作了{p> fileURL。 加载时我没有打开或创建它,我只是在用户退出应用程序时保存它。

如果该文件已存在于磁盘上:

以下是打开的代码:

[document openWithCompletionHandler:^(BOOL success){
    if (!success) {
        NSLog(@"FAILED TO OPEN DOCUMENT");
    }

    // Code to handle document's data
}];

为了保存:

[document saveToURL:[NSURL fileURLWithPath:path] forSaveOperation:UIDocumentSaveForOverwriting completionHandler:^(BOOL success){
    if (!success || document.documentState == UIDocumentStateSavingError) {
    NSLog(@"FAILED TO CLOSE DOCUMENT");
    }
}];

我的文档在contentsForType: error:中正确编码并提供其数据,因为它在首次创建时可以正确保存。

我在handleError: userInteractionPermitted:

中没有收到任何错误

有什么想法吗?

N.B。我将数据保存在applicationDidEnterBackground:

永远不会调用saveToURL: forSaveOperation: completionHandler:的完成处理程序......

3 个答案:

答案 0 :(得分:1)

你在模拟器上测试过吗?由于不保证立即完成保存,因此请满车!如果你在模拟器上测试,试试这个:在模拟器上安装应用程序,停止首次打开会话,在模拟器上打开应用程序,编辑并保存文档,关闭应用程序,重新打开你的应用程序并检查你的文档是否已保存 - 如果是的话!当您停止首次亮相时PS与模拟器可能会中断后台保存的过程(但我们不知道系统何时执行此操作)。

跳这个帮助

答案 1 :(得分:1)

您是否先在某处创建了文档?

例如,用于创建:

[document saveToURL:[NSURL fileURLWithPath:path] forSaveOperation:UIDocumentSaveForCreating completionHandler:^(BOOL success){
    if (!success || document.documentState == UIDocumentStateSavingError) {
    NSLog(@"FAILED TO CLOSE DOCUMENT");
}
}];

并覆盖:

[document saveToURL:[NSURL fileURLWithPath:path] forSaveOperation: UIDocumentSaveForOverwriting completionHandler:^(BOOL success){
    if (!success || document.documentState == UIDocumentStateSavingError) {
    NSLog(@"FAILED TO CLOSE DOCUMENT");
}
}];

答案 2 :(得分:0)

感谢Armand DOHM的帮助。事实证明,保存暂停,直到我的应用程序进入前台,因为我在用户按下主页按钮时保存。这个问题似乎解决了这个问题:Question