序列化 / 二进制格式

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

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

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 = tryData(contentsOf: path)
let decoder = PropertyListDecoder()
let data2 = try! decoder.decode(
    TestData.selffrom: data_b2)
print("data2 is \(data2)")