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保存/检索数据的主要内容,如果未能解决你的问题,请参考以下文章