Как удалить с помощью UIDocument - PullRequest
0 голосов
/ 09 мая 2018

Я использую Swift 4, и мне нужно знать, как удалить с помощью UIDocument. Я знаю, как настроить URL-путь:

if let url = try? FileManager.default.url(
        for: .documentDirectory,
        in: .userDomainMask,
        appropriateFor: nil,
        create: true
        ).appendingPathComponent("Inbox/test.txt") {
        falloutFileHandler = FalloutTextFileHandler(fileURL: url)
    }

, где falloutFileHandler имеет тип UIDocument, а у falloutFileHandler есть свойство falloutFile, в котором строка хранится как свойство с именем data.

И я знаю, как открыть файл:

falloutFileHandler?.open { success in
        if success {
            if let theText = self.falloutFileHandler?.falloutFile?.data {
                self.textView.text = self.text!
            } else {
                print("Something went wrong")
            }
        }
    }

Но я не знаю, как удалить файл с помощью UIDocument. Заранее спасибо.

Кроме того, есть ли способ распечатать, почему что-то не удается открыть? Например, print (error) или что-то в этом роде вместо того, чтобы делать то, что я делал, это print («что-то пошло не так»)?

1 Ответ

0 голосов
/ 09 мая 2018

UIDocument используется в качестве основного контейнера для документов приложения iOS. Он умеет читать документ, возвращать документ, сравнивать версии документа (например, где ваш локальный документ может отличаться от того, что хранится в iCloud и т. Д.).

Вы не можете использовать встроенные API UIDocument, чтобы удалить себя. Вам придется либо реализовать в своем подклассе (потому что только ваш подкласс точно знает, где и как хранится ваш документ), либо вам, скорее всего, нужно будет использовать FileManager, так же, как вы использовали его, чтобы выбрать, куда изначально загружать / читать ваш UIDocument (или в вашем случае FalloutTextFileHandler) с.

Чтобы использовать последнее, вы должны сделать что-то вроде:

do {
    let fm = FileManager.default
    if let url = try fm.url(
        for: .documentDirectory,
        in: .userDomainMask,
        appropriateFor: nil,
        create: true
        ).appendingPathComponent("Inbox/test.txt") {

            // the actual delete method
            try FileManager.default.removeItem(at: url)

        }
    } catch let error as NSError {
        print("Ooops! Something went wrong: \(error)")
    }

}

...