Derulo 1.7.2

Derulo 1.7.2

测试已测试
语言语言 SwiftSwift
许可协议 MIT
发布最后发布2022年9月
SPM支持 SPM

Christian Hatch 维护。



Derulo 1.7.2

Derulo

Powered by Dockwa

Version License Platform

一系列灵活的 Swift 协议和辅助工具,用于组织和管理 JSON 与原生 Swift 对象之间的转换。

旨在为您的模型对象提供一个一致的数据库转置/映射/缓存/离线策略而不影响您。

  • 设计得足够灵活,以满足您的模型实现需求,同时提供一个通用框架来组织您的 JSON 解析和缓存策略。

  • 一组可组合但不同的功能,以便您使用适用于当前用例的协议和辅助工具。

  • 简单、直接且轻量级;Derulo 正介于“我只是自己实现它而无需第三方库”和“我真的不想重写轮子并从头开始实现 JSON 策略”之间。

示例

从JSON开始

var jasonJSON = [String : Any]()
jasonJSON["id"] = 93
jasonJSON["name"] = "Jason Derulo"
jasonJSON["fav_song"] = "wiggle"

从JSON获取

解析成模型对象

let jasonPerson = Person(json: jasonJSON)

转换为JSON

转换成JSON

let jasonPersonJSON = jasonPerson.asJSON

数组

创建另一个JSON

var jaySeanJSON = JSON()
jaySeanJSON["id"] = 57
jaySeanJSON["name"] = "Jay Sean"

从JSON数组开始

let jsonArray: [JSON] = [jasonJSON, jaySeanJSON]

解析为模型对象

let people: [Person] = JSONMapper<Person>().mapArray(json: jsonArray)

转换为JSON

let peopleJSON: [JSON] = JSONConverter<Person>().jsonArray(fromArray: people)

持久性

let persistenceKey = "people"

存储到磁盘

JSONPersistenceManager<Person>().store(array: people, withKey: persistenceKey)

从磁盘恢复

let restoredPeople: [Person] = JSONPersistenceManager<Person>().restoreArray(withKey: persistenceKey)

从磁盘删除

JSONPersistenceManager<Person>().removeObject(withKey: persistenceKey)

从数据中获取

以数据开始

guard let data = try? JSONSerialization.data(withJSONObject: jasonJSON, options: []) else { return }

映射到对象

let jasonPersonFromData = JSONMapper<Person>().map(data: data)
print(jasonPersonFromData ?? "")

示例实现

struct Person: Identifiable, JSONModel {
    let identifier: Identifier
    let name: String
    let favoriteSong: Song?
}

extension Person: JSONMappable {
    init?(json: JSON?) {
        guard let json = json else { return nil }

        guard let id = IntToStringTransform().transform(fromJSON: json["id"]) else {
            print(#function, String(describing: Person.self), "JSON missing required properties")
            return nil
        }

        self.identifier = id
        self.name = json["name"] as? String ?? "No Name"
        self.favoriteSong = Song(jsonEntry: json["fav_song"])
    }
}

extension Person: JSONConvertible {
    var asJSON: JSON {
        var json = JSON()
        json["id"] = IntToStringTransform().transform(toJSON: identifier)
        json["name"] = name

        if let favoriteSong = favoriteSong {
            json["fav_song"] = favoriteSong.asJSONEntry
        }
        return json
    }
}

extension Person: JSONPersistable {
    var asPersistenceJSON: JSON { asJSON }
}

enum Song: String {
    case wiggle
    case talkDirty
}

extension Song: JSONEntryMappable, JSONEntryConvertible {
    init?(jsonEntry: JSONEntry?) {
        guard let jsonEntry = jsonEntry as? String else { return nil }
        self.init(rawValue: jsonEntry)
    }

    var asJSONEntry: String { rawValue }
}

需求

Swift 5.6

安装

Swift包管理器

Swift包管理器(https://swiftlang.cn/package-manager/)是一个用于自动化分发Swift代码的工具,并集成在swift编译器中。

一旦你设置了Swift包,将Derulo添加为依赖就像将其添加到你的Package.swift中的dependencies值一样简单。

dependencies: [
    .package(url: "https://github.com/dockwa/Derulo", .upToNextMajor(from: "1.7.2"))
]

CocoaPods

Derulo可以通过CocoaPods获取。要安装它,只需将以下行添加到你的Podfile

pod 'Derulo'

作者

Christian Hatch,[email protected]

许可

Derulo遵循MIT许可证。有关更多信息,请参阅LICENSE文件。