swift 使用FileManager保存/检索数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 使用FileManager保存/检索数据相关的知识,希望对你有一定的参考价值。
public final class DiskCaretaker {
public static let decoder = JSONDecoder()
public static let encoder = JSONEncoder()
public static func save<T: Codable>(_ object: T, to fileName: String) throws {
do {
let url = createDocumentURL(withFileName: fileName)
let data = try encoder.encode(object)
try data.write(to: url, options: .atomic)
} catch (let error) {
print("Save failed: Object: `\(object)`, " +
"Error: `\(error)`")
throw error }
}
public static func retrieve<T: Codable>(_ type: T.Type, from fileName: String) throws -> T {
let url = createDocumentURL(withFileName: fileName)
return try retrieve(T.self, from: url)
}
public static func retrieve<T: Codable>(_ type: T.Type, from url: URL) throws -> T {
do {
let data = try Data(contentsOf: url)
return try decoder.decode(T.self, from: data)
} catch (let error) {
print("Retrieve failed: URL: `\(url)`, Error: `\(error)`")
throw error
}
}
public static func createDocumentURL(withFileName fileName: String) -> URL {
let fileManager = FileManager.default
let url = fileManager.urls(for: .documentDirectory,
in: .userDomainMask).first!
return url.appendingPathComponent(fileName).appendingPathExtension("json")
}
}
以上是关于swift 使用FileManager保存/检索数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Swift 处理错误(FileManager 和其他一般)[关闭]
FileManager MoveItem 回调 - Swift
Swift 3 FileManager.default(......).first 是啥意思?
使用Swift的FileManager迭代文件夹及其子文件夹中的文件
使用 Swift 的 FileManager 遍历文件夹及其子文件夹中的文件
FileManager.default.contentsOfDirectory 在 swift 3 中失败