无论我尝试什么,这都不起作用......
我正在尝试使用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:
的完成处理程序......
答案 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