【问题标题】:UIDocument not saving?UIDocument 不保存?
【发布时间】:2014-04-15 10:40:49
【问题描述】:

不管我怎么尝试,这都行不通……

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

编辑:当应用程序进入后台时,我尝试保存我的文档。但是,当我进入前台时,该应用程序似乎实际上“完成了保存”文档。我的应用程序是否不允许在后台保存文档?

我检查了我的网址,它们都是有效的。

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

document = [[MyDocumentClass alloc] initWithFileURL:fileURL];

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: 没有任何错误

有什么想法吗?

注意我将数据保存在applicationDidEnterBackground:

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

【问题讨论】:

    标签: ios objective-c save uidocument


    【解决方案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】:

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

      【讨论】:

        【解决方案3】:

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

        点击帮助

        【讨论】:

        • 当我重新进入前台时,我的文档保存了!
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-21
        • 2013-08-16
        • 2013-10-29
        • 1970-01-01
        • 1970-01-01
        • 2017-08-28
        • 2021-04-14
        相关资源
        最近更新 更多