ios - Swift UIDocument 保存不可靠
问题描述
为什么调用.save
外部(iCloud)UIDocument 如此棘手?:皱眉: 它要么:
- 永远需要并且不保存,或者
- 保存操作失败,尽管
startAccessingSecurityScopedResource()
在保存调用之前调用。 - 有时会随机保存!
所以不确定我在这里错过了什么。这是我的保存位代码(我只处理纯文本文件):
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 (我真的需要先关闭文档再说,再次打开同一个文档还是打开另一个文档?)。我只在编辑完成或按下完成按钮时保存更改。
非常感谢您的帮助!
解决方案
推荐阅读
- php - WordPress 中 Twig / Timber 的转义要求
- sql - Node 中的辅助 SQL 函数
- kotlin - Kotlin 链接来自不同 InputStream 的多个序列?
- ruby-on-rails - 具有不同类型地址的配置文件和 2 个配置文件可能共享相同的地址
- algorithm - 排列从 1 到 100 的列表,使得对于任何索引 i,它映射到不等于 i 的 j
- javascript - React:在构造函数中将状态属性初始化为某个值,但在渲染时返回未定义
- reactjs - 在辅助函数中调用 axios 时无法读取属性“then”
- node.js - Angular 客户端启用 CORS
- javascript - 检查用户名是否存在?
- python - 合并不同时间间隔的 Pandas DataFrame 时,如何用常数值填充 NaN