哎!吵的头疼! 不上代码都是耍流氓
我个人的答案是:我们一定要认清楚应用场景, 看情况!好吧是废话,请看代码 先弄清: 问题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 ObjectMapperstruct 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().map(JSONString: dict) print( structModel?.name ?? "") }}
协议 有点累了 有使劲再写
协议有好多的东西可以写 我们先来简单点的// 普通协议 //扩展协议 //结构体协议 协议的协议