Swift UID Сохранение документов ненадежно
Почему звонит .save
на внешнем (iCloud) UIDocument так сложно?:frowning: Либо:
- занимает вечность и не спасает, или
- операция сохранения не удалась, несмотря на вызов
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 (действительно ли мне нужно закрыть документ, прежде чем, скажем, открыть тот же документ снова или открыть другой?). Я сохраняю изменения только после завершения редактирования или нажатия кнопки "Готово".
Помощь очень ценится!