如何使用UIDocument删除

时间:2018-05-09 01:33:30

标签: swift4 uidocument

我正在使用Swift 4,我需要知道如何使用UIDocument删除。我知道如何设置网址路径:

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删除文件。提前谢谢。

另外,有没有办法打印出为什么某些东西不能成功打开?比如打印(错误)或类似的东西,而不是做我所做的打印(“出错了”)?

1 个答案:

答案 0 :(得分:1)

UIDocument用作iOS应用程序文档的基础容器。它知道如何阅读文档,还原文档,比较文档的版本(例如,您的本地文档可能与存储在iCloud中的文档不同,等等)。

但是,您无法使用UIDocument的内置API删除自身。您必须在子类中实现(因为只有您的子类确切地知道文档的存储位置/方式),或者您很可能需要使用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)")
    }

}