文档章节

swift到底要不要json转对象

赵大财
 赵大财
发布于 2018/04/23 21:53
字数 440
阅读 18
收藏 0

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

先弄清:

问题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 ?? "")
    }
}

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

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

© 著作权归作者所有

赵大财
粉丝 22
博文 162
码字总数 38743
作品 0
长沙
私信 提问
Alamofire 、ObjectMapper封装

demo点这里 简介: 实现统一设置:超时时长、header、对code码的处理。。 统一对url进行了转码。(空格等特殊字符不崩溃) 使用简单,自动转化成为对象。(array,object,json) 对请求结果...

LiYaoPeng
2018/01/08
0
0
Codable 的在低端机器上的坑(其实是struct的坑)

从swift 4.0之后,项目中JSON转Model(我们Model都用的struct)就转而使用了,之前一直相安无事。但是最近一个版本低端机器(iPhone 4s/iPhone 5/iPhone 5c)的用户出现crash。内容看出是转Mod...

smalldu
2018/10/15
0
0
iOS好项目收集

项目 简述 日期 SCTableViewCell 类似与QQ侧滑删除Cell的Demo 201501018 JHChainableAnimations 可读性好使用方便的动画库,语法类似与Masonry,使用链式编程 20150506 awesome-ios-chart iOS...

哪一种黑
2016/03/20
57
0
isunimp/ModelUtility

ModelUtility 强大的JSON和Model转换库,解决其他类似框架在Swift中使用CoreData的Crash问题以及解析不成功等问题,专注于为Swift提供一个强大且稳定的Model框架。 Features 支持在Swift中使...

isunimp
2016/05/19
0
0
Swift 与 JSON 数据

Swift 与 JSON 数据 我们大家平时在开发 App 的时候,相信接触最多的就是 JSON 数据了。只要你的 App 有读取网络数据的功能,你就免不了要与 JSON 打交道。比如你做一个新闻 App,你要读取和...

法斗斗
2016/06/23
25
0

没有更多内容

加载失败,请刷新页面

加载更多

uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
31分钟前
7
0
Tomcat是如何实现异步Servlet的

前言 通过我之前的Tomcat系列文章,相信看我博客的同学对Tomcat应该有一个比较清晰的了解了,在前几篇博客我们讨论了Tomcat在SpringBoot框架中是如何启动的,讨论了Tomcat的内部组件是如何设...

木木匠
55分钟前
29
0
mysql中间件分享(Mysql-prxoy,Atlas,DBProxy,Amoeba,cobar,TDDL)

hello 各位小伙伴大家好,我是小栈君,这期我们分享关于mysql中间件的研究,也就是数据层的读写分离和负载均衡,希望能够在实际的应用中能够帮助到各位小伙伴。 下期我们将继续分享go语言的系...

IT干货栈
今天
10
0
OSChina 周一乱弹 —— 人生,还真是到处是意外

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @这次装个文艺青年吧 :#今日歌曲推荐# 分享lil peep的单曲《High School》 《High School》- lil peep 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
943
13
Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部