zoukankan      html  css  js  c++  java
  • 【KakaJSON手册】07_Coding_归档_解档

    KakaJSON可以只用一行代码将常用数据进行归档解档

    • 后面代码中会用到 file 文件路径
    // 文件路径(String或者URL都可以)
    let file = "/Users/mj/Desktop/test.data"
    

    String

    let string1 = "123"
    // 将字符串写入文件
    write(string1, to: file)
    
    // 从文件中读取字符串
    let string2 = read(String.self, from: file)
    XCTAssert(string2 == string1)
    
    // 从文件中读取Int
    XCTAssert(read(Int.self, from: file) == 123)
    

    Date

    let date1 = Date(timeIntervalSince1970: 1565922866)
    // 将Date写入文件
    write(date1, to: file)
    
    // 从文件中读取Date
    let date2 = read(Date.self, from: file)
    XCTAssert(date2 == date1)
    
    // 从文件中读取Int
    XCTAssert(read(Int.self, from: file) == 1565922866)
    

    Array

    let array1 = ["Jack", "Rose"]
    // 将数组写入文件
    write(array1, to: file)
    
    // 从文件中读取数组
    let array2 = read([String].self, from: file)
    XCTAssert(array2 == array1)
    
    // 同样支持Set、Dictionary等
    

    Model

    struct Book: Convertible {
        var name: String = ""
        var price: Double = 0.0
    }
    
    struct Car: Convertible {
        var name: String = ""
        var price: Double = 0.0
    }
    
    struct Dog: Convertible {
        var name: String = ""
        var age: Int = 0
    }
    
    struct Person: Convertible {
        var name: String = "Jack"
        var car: Car? = Car(name: "Bently", price: 106.666)
        var books: [Book]? = [
            Book(name: "Fast C++", price: 666.6),
            Book(name: "Data Structure And Algorithm", price: 666.6),
        ]
        var dogs: [String: Dog]? = [
            "dog0": Dog(name: "Wang", age: 5),
            "dog1": Dog(name: "ErHa", age: 3),
        ]
    }
    
    // 将模型写入文件
    write(Person(), to: file)
    
    // 从文件中读取模型
    let person = read(Person.self, from: file)
    
    XCTAssert(person?.name == "Jack")
    XCTAssert(person?.car?.name == "Bently")
    XCTAssert(person?.car?.price == 106.666)
    XCTAssert(person?.books?.count == 2)
    XCTAssert(person?.dogs?.count == 2)
    

    Model Array

    struct Car: Convertible {
        var name: String = ""
        var price: Double = 0.0
    }
    
    let models1 = [
        Car(name: "BMW", price: 100.0),
        Car(name: "Audi", price: 70.0)
    ]
    // 将模型数组写入文件
    write(models1, to: file)
    
    // 从文件中读取模型数组
    let models2 = read([Car].self, from: file)
    XCTAssert(models2?.count == models1.count)
    XCTAssert(models2?[0].name == "BMW")
    XCTAssert(models2?[0].price == 100.0)
    XCTAssert(models2?[1].name == "Audi")
    XCTAssert(models2?[1].price == 70.0)
    

    Model Set

    struct Car: Convertible, Hashable {
        var name: String = ""
        var price: Double = 0.0
    }
    
    let models1: Set<Car> = [
        Car(name: "BMW", price: 100.0),
        Car(name: "Audi", price: 70.0)
    ]
    
    // 将模型Set写入文件
    write(models1, to: file)
    
    // 从文件中读取模型Set
    let models2 = read(Set<Car>.self, from: file)!
    XCTAssert(models2.count == models1.count)
    for car in models2 {
        XCTAssert(["BMW", "Audi"].contains(car.name))
        XCTAssert([100.0, 70.0].contains(car.price))
    }
    

    Model Dictionary

    struct Car: Convertible {
        var name: String = ""
        var price: Double = 0.0
    }
    
    let models1 = [
        "car0": Car(name: "BMW", price: 100.0),
        "car1": Car(name: "Audi", price: 70.0)
    ]
    
    // 将模型字典写入文件
    write(models1, to: file)
    
    // 从文件中读取模型字典
    let models2 = read([String: Car].self, from: file)
    XCTAssert(models2?.count == models1.count)
    
    let car0 = models2?["car0"]
    XCTAssert(car0?.name == "BMW")
    XCTAssert(car0?.price == 100.0)
    
    let car1 = models2?["car1"]
    XCTAssert(car1?.name == "Audi")
    XCTAssert(car1?.price == 70.0)
    
  • 相关阅读:
    yocto/bitbake 学习资源
    QEMU/KVM学习资源
    ubuntu 中创建和删除用户
    git 重命名本地和远程分支
    Ubuntu 上搭建 FTP 服务器
    gdb 常见用法
    git log 显示与特定文件相关的 commit 信息
    基于 qemu system mode 运行 arm 程序
    基于 qemu user mode 运行 aarch64 程序
    checking in(airport)
  • 原文地址:https://www.cnblogs.com/mjios/p/11395195.html
Copyright © 2011-2022 走看看