使用FileManager,可以使用
FileManager
方法
fileExists(atPath:)
将文件保存到应用程序沙盒时。
但是,当直接与
UIDocument
保存方法
save(to:for:completion)
可以接受一个新的URL,该URL会在没有警告的情况下覆盖可能存在的内容,从而很容易意外覆盖文件。事实上,据我所知,没有一个UIDocument方法能够传达文档操作可能失败的详细信息。
这种类型的检查是否仅适用于FileManager或其他框架?
1.定义文档子类
class TextDocument: UIDocument {
var text: String?
}
2.获取文档目录的URL
let documentsDirectory = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first!
3.创建2个文档并保存
let doc1 = TextDocument(fileURL: documentsDirectory
.appendingPathComponent("File 1")
.appendingPathExtension("txt"))
let doc2 = TextDocument(fileURL: documentsDirectory
.appendingPathComponent("File 2")
.appendingPathExtension("txt"))
doc1.save(to: doc1.fileURL, for: .forCreating) { success in
print(success) // prints true
}
doc2.save(to: doc2.fileURL, for: .forCreating) { success in
print(success) // prints true
}
4.问题:将doc1保存到doc2的URL会覆盖doc2而不发出警告。
doc1.save(to: doc2.fileURL, for: .forOverwriting) { success in
print(success) // prints true
}