Swift UID Сохранение документов ненадежно - PullRequest
1 голос
/ 14 июля 2020

Почему вызов .save на внешний (iCloud) UIDocument так сложен? : frowning: Либо:

  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 (действительно ли мне нужно закрывать документ, прежде чем, скажем, открыть тот же документ снова или открыть другой?). Я сохраняю изменения только после завершения редактирования или нажатия кнопки «Готово».

Помощь очень ценится!

...