MagicMapper 1.0.2

MagicMapper 1.0.2

测试已测试
语言语言 SwiftSwift
许可 自定义
发布上次发布2016年10月
SPM支持SPM

Adrian Mateoaea维护。



  • Adrian Mateoaea

magic-mapper-swift

🌟超级轻量且易于自动将JSON映射到模型的工具

  • [ ] 完成编写README.md
  • [ ] 允许将模型转换回字典

如何设置

步骤1:获取JSON模型

{
  "total_count": 176552,
  "incomplete_results": false,
  "items": [
    {...}
  ]
}

步骤2:编写Swift模型

class GithubRepository: NSObject, Mappable {
    var id        : String = ""
    var name      : String = ""
    var body      : String = ""
    var url       : String = ""
    var photo     : String = ""
    var createdAt : Date?
}

class GithubSearch: NSObject, Mappable {
    var total : Int = 0
    var items : [GithubRepository] = []
}

步骤3:将您自定义的命名与JSON模型链接

使用mapFromDictionary属性可以自定义属性映射。您还可以访问字典和数组中的嵌套值(例如:emails.0.address)。

var mapFromDictionary: [String : String] {
    return [
        "body"      : "description",
        "photo"     : "owner.avatar_url",
        "createdAt" : "created_at"
    ]
}

步骤4:自定义属性

mapFromDictionaryTypes属性允许您自定义JSON属性的类型(仅适用于可选类型)。如果您需要使用其他Swift结构,只需使用Mappable协议来扩展它们。

var mapFromDictionaryTypes: [String : Mappable.Type] {
    return [
        "createdAt" : Date.self
    ]
}

例如,createdAt是类型为Date的,而JSON属性是类型为String的。为了将String转换为Date类型,只需扩展它使用Mappable协议,它会自动知道将值转换为模型并设置它。

extension Date: Mappable {

    init?(from: Any) {
        if let value = from as? String {
            let formatter = DateFormatter()
            formatter.dateFormat = "YYYY-MM-dd'T'HH':'mm':'ss'Z'"
            if let date = formatter.date(from: value) {
                self.init(timeIntervalSince1970: date.timeIntervalSince1970)
                return
            }
        }

        self.init()
    }
}

就这样!

现在您可以从来自网络层的通用字典中填充您的模型了。编码愉快 :)。

Alamofire.request(APIURL).responseJSON { (response) in
    if let dictionary = response.result.value as? KeyValue {
        self.feed = GithubSearch(dictionary)
    }
}