Swift - 从字典(或者Alamofire)直接创建Model文件的工具
Posted YouXianMing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift - 从字典(或者Alamofire)直接创建Model文件的工具相关的知识,希望对你有一定的参考价值。
Swift - 从字典(或者Alamofire)直接创建Model文件的工具
效果
1. 常规生成model的方式
2. 通过debug创建model的方式
特性
1. 可以处理JSON格式的字典数据
2. 可以处理本地的json数据
3. 可以处理Alamofire生成的json格式返回数据
4. 生成的Models继承自NSObject,所有方法均系系统方法,没有任何接口污染,后续升级不存在版本兼容问题(以下是一个生成的Model的示例)
// // AlamofireModel.swift // // http://www.cnblogs.com/YouXianMing/ // https://github.com/YouXianMing // // Copyright (c) YouXianMing All rights reserved. // import Foundation // MARK: [Class] AlamofireModel class AlamofireModel: NSObject { // MARK: Stored propeties. //----------------------------------------------------------------------------- var origin : String? var url : String? var args : ArgsModel? var headers : HeadersModel? // MARK: Init methods. //----------------------------------------------------------------------------- /** Init with dictionary. - parameter dictionary: The json data dictionary. - returns: The instance. */ init?(dictionary : [String : AnyObject]?) { super.init() if let _ : [String : AnyObject] = dictionary { setValuesForKeysWithDictionary(dictionary!) } else { return nil} } /** Override init. - returns: The instance. */ override init() { super.init() } // MARK: SetValueForKey & setValueForUndefinedKey. //----------------------------------------------------------------------------- /** Sets the property of the receiver specified by a given key to a given value. - parameter value: The value for the property identified by key. - parameter key: The name of one of the receiver\'s properties. */ override func setValue(value: AnyObject?, forKey key: String) { // To ignore Null value. guard value != nil else { return } // Dictionary: args if key == "args" { let dictionary = value as! [String : AnyObject] let model = ArgsModel(dictionary: dictionary) super.setValue(model, forKey: key) return } // Dictionary: headers if key == "headers" { let dictionary = value as! [String : AnyObject] let model = HeadersModel(dictionary: dictionary) super.setValue(model, forKey: key) return } super.setValue(value, forKey: key) } /** Invoked by setValue:forKey: when it finds no property for a given key. - parameter value: The value for the key identified by key. - parameter key: A string that is not equal to the name of any of the receiver\'s properties. */ override func setValue(value: AnyObject?, forUndefinedKey key: String) { // [Example] change property \'id\' to \'userId\'. // // if key == "id" { // // userId = value as? NSNumber // return // } print("[‼️] The file \'\\(self.classForCoder).swift\' has an undefined key \'\\(key)\', and the key\'s type is \\(value?.classForCoder).") } }
源码
https://github.com/YouXianMing/Create-Swift-JSON-Model/tree/master
以上是关于Swift - 从字典(或者Alamofire)直接创建Model文件的工具的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Alamofire,swift 3 中将字典作为参数发送
如何在 Alamofire Swift 中发送带有数组的字典
将字典值作为空值传递给 alamofire 服务 ios swift
如何使用新的 Swift 3 和 Alamofire 解析 JSON(字典和数组)