美文网首页
Swift-ObjectMapper入门

Swift-ObjectMapper入门

作者: 无星灬 | 来源:发表于2019-04-06 20:28 被阅读0次

    背景

    突然很想学swift...不怕死的我在完全没用过的情况下决定通过重构公司的古老项目来完成这段学习之旅....
    model转json或者json转model是很常见的需求....所以这就是为什么我要用ObjectMapper了...(其实是我把# SwiftyJSON
    的star数错了..我可能会趁用的还不多改成SwiftyJSON,毕竟ObjectMapper实在查不到什么资料不是吗...)

    使用

    初始化

    import UIKit
    import ObjectMapper
    
    class BaseModel: Mappable {
        //定义属性
        var name : String? = "wuxing"    
        init() {
    //为什么要写这个init,原因很简单,总有些时候你仅仅想初始化一个model,而非通过外部传入数据初始化
        }
        
        required init?(map: Map) {
            //重写ObjectMapper的init
        }
        
        func mapping(map: Map) {
            //转换规则
            name <- map["name"]
        }
     }
    

    如图,基本已经写得很清楚了emm

    规则转换

    有些时候,有的值是int或者bool,你会发现死活转换不出来...这时候就要自己写转换规则了

    
    import UIKit
    import ObjectMapper
    
    class BaseModel: Mappable {
        var man : Bool? = true
    
        var age : Int? = 21
        init() {
        }
        
        required init?(map: Map) {
            print("BaseModel初始化")
        }
        
        func mapping(map: Map) {
            man <- (map["man"],transformBool)
    
            age <- (map["age"],transformInt)
        }
        
        
    //    转换规则
        
        
        let transformInt = TransformOf<Int, String>(fromJSON: { (value: String?) -> Int? in
            if let value = value {
                return Int(value)!
            }
            return nil
        }, toJSON: { (value: Int?) -> String? in
            // transform value from Int? to String?
            if let value = value {
                return String(value)
            }
            return nil
        })
        
        let transformBool = TransformOf<Bool, String>(fromJSON: { (value: String?) -> Bool? in
            if let value = value {
                return (value as NSString).boolValue
            }
            return false
        }, toJSON: { (value: Bool?) -> String? in
            if let value = value {
                return String(value)
            }
            return "false"
        })
        
    
    }
    
    

    就这样,就能转换了.

    end

    其他好像也没什么好写的...不过我写得时候说实话,搜都搜不到什么示例...
    不会的时候确实觉得很难用,会用了觉得还ok,不过用使用范围更广的框架一定是更好的(坑都被人踩完了emmm)

    看看我能不能把ObjectMapper换成SwiftyJSON吧

    相关文章

      网友评论

          本文标题:Swift-ObjectMapper入门

          本文链接:https://www.haomeiwen.com/subject/etcdiqtx.html