序列化到文件

序列化 / 二进制格式

struct TestData: Codable {
    var text: String
    var num: Float
    var arr: [Int]
}

let data = TestData(text: "Hello",
    num: 3.14, arr: [2, 5, 7])

let path = FileManager.default.urls(
    for: .documentDirectory,
    in: .userDomainMask).first!
    .appendingPathComponent("file.bin")

//Write Binary Data
let encoder = PropertyListEncoder()
encoder.outputFormat = .binary
let data_b = try! encoder.encode(data)
try? data_b.write(to: path)

//Read Binary Data
let data_b2 = try! Data(contentsOf: path)
let decoder = PropertyListDecoder()
let data2 = try! decoder.decode(
    TestData.self, from: data_b2)
print("data2 is \(data2)")