swift到底要不要json转对象

哎!吵的头疼! 不上代码都是耍流氓
我个人的答案是:
我们一定要认清楚应用场景, 
看情况!好吧是废话,请看代码

先弄清:

问题1:我们先来了解 什么是引用类型,而结构体是值类型。
问题2:团队用的ObjectMapper 是我们来看看是不是能支持值类型
问题3:我们来理解一下面向协议开发上几个demo

问题1的代码:

 //我们先来看看结构体
        let demoClass = MyClass()
        let demoStruct = MyStruct(name: "赵大财", age: 18)
        var demoClassMove = demoClass
        var demoStructMove = demoStruct
        demoClassMove.name = "赵大财G"
        demoStructMove.name = "赵大财G"
        print(demoClass.name , demoStruct.name)  //可以看出结构体重的name并没有被改变
        
        
        //ok 我们在试试数组+字典 这种最长用的模型
        var dictArr = [["name":"字典赵大财1"],["name":"字典赵大财2"]]
        var dictArrMove = dictArr
        dictArrMove[0]["name"] = "字典赵大财1G"
        print("我们看看原来的改了没", dictArr.first!["name"])
        print("我们看看现在的", dictArrMove.first!["name"])   //可以看出原来的没有被改变
        
        
        
        //OK 我们先试一试模型
        let model1 = MyClass()
        model1.name = "模型赵大财1"
        let model2 = MyClass()
        model2.name = "模型赵大财2"
        var modelArr = [model1,model2]
        var modelArrMove = modelArr
        modelArrMove[0].name = "模型改变"
        print("模型原来",   modelArr[0].name)
        print("模型改后",   modelArrMove[0].name)   //可以看出原来的没有被改变


demo2:
 

import ObjectMapper

struct Temperature: Mappable {
    var name:String = ""
    var age:String = ""
    
    init?(map: Map) {
    }
    
    mutating func mapping(map: Map) {
        name     <- map["name"]
        age     <- map["age"]
    }
}

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let dict = "{\"name\":\"赵大财\",\"age\":\"100\"}"
        let structModel =  Mapper<Temperature>().map(JSONString: dict)
        print( structModel?.name ?? "")
    }
}

协议 有点累了  有使劲再写
协议有好多的东西可以写 我们先来简单点的

// 普通协议  //扩展协议 //结构体协议 协议的协议

转载于:https://my.oschina.net/zhaodacai/blog/1800020

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值