• Swift


    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

  • 相关阅读:
    git查看工作状态和历史提交
    PowerDesigner工具栏palette的方法
    WCF证书制作
    ASP.NET.4 高级程序第4版 第3章Web窗体
    tbar居右显示的两种方法
    测试
    转载extj grid
    正值
    网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍[转]
    SQL Server 启用“IP+端口”连接
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5814352.html
Copyright © 2020-2023  润新知