1

为什么调用.save外部(iCloud)UIDocument 如此棘手?:皱眉: 它要么:

  1. 永远需要并且不保存,或者
  2. 保存操作失败,尽管 startAccessingSecurityScopedResource()在保存调用之前调用。
  3. 有时会随机保存!

所以不确定我在这里错过了什么。这是我的保存位代码(我只处理纯文本文件):

private func saveDocument() {
        if (document == nil) { return }

        saveLabel.text = "Saving.."
        saveLabel.isHidden = false
        saveIndicator.isHidden = false
        saveIndicator.startAnimating()
        if (!(document?.fileURL.startAccessingSecurityScopedResource() ?? false)) {
            self.saveLabel.text = "File is busy!"
            self.saveIndicator.stopAnimating()
            self.saveIndicator.isHidden = true
            Common.alert(view: self, message: "File is busy! Please try again in a bit.")
            self.showRetrySaveButton()
            return
        }

        document?.save(to: fileURL!,
                           for: .forOverwriting,
               completionHandler: {(success: Bool) -> Void in

                self.saveIndicator.stopAnimating()
                self.saveIndicator.isHidden = true
            if success {
                self.document?.fileURL.stopAccessingSecurityScopedResource()
                self.saveLabel.text = "Saved!"
                self.hideSaved()
                self.hideDoneButton()
                
            } else {
                self.saveIndicator.isHidden = true
                self.saveLabel.text = "Save failed!"
                Common.alert(view: self, message: "File save failed! Please try again.")
                self.showRetrySaveButton()
            }
        })
    }

即使在保存操作之后,我用于保存的文本框也会保持文本加载,这就是为什么我没有真正关闭 UIDocument (我真的需要先关闭文档再说,再次打开同一个文档还是打开另一个文档?)。我只在编辑完成或按下完成按钮时保存更改。

非常感谢您的帮助!

4

0 回答 0