• swift 第十一课 结构体定义model类


    结构体是可以作为 model 类使用的不过也要 写下的创建方法

    import UIKit
    /***
    创建一个model 结构,重写init 方法,
    结构体的属性不能出现可选类型
    **/
    struct Model { var title :String var url :String var numId :String init(dic :NSDictionary) { self.title = (dic["title"] as? String)! self.numId = (dic["numId"] as? String)! self.url = (dic["url"] as? String)! } } class ViewController: UIViewController { lazy var dicArr : Array<Dictionary<String, Any>>! = { var arr = Array<Dictionary<String, Any>>() for i in 0...26{ var dic = Dictionary<String,Any>() var title = String(format:"name_%f", CGFloat(i)) var numId = String(format:"numId_%d",i) var url = String(format:"https://name -%@ - numId %@",title,numId) dic["title"] = title dic["numId"] = numId dic["url"] = url arr.append(dic) } return arr }() override func viewDidLoad() { super.viewDidLoad() for dic in self.dicArr {//在这里调用下 稍后公布测试打印的结果 let model = Model.init(dic: dic as NSDictionary) print(model.url) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() } }

    测试结果:

    https://name -name_0.000000 - numId numId_0
    https://name -name_1.000000 - numId numId_1
    https://name -name_2.000000 - numId numId_2
    https://name -name_3.000000 - numId numId_3
    https://name -name_4.000000 - numId numId_4
    https://name -name_5.000000 - numId numId_5
    https://name -name_6.000000 - numId numId_6
    https://name -name_7.000000 - numId numId_7
    https://name -name_8.000000 - numId numId_8
    https://name -name_9.000000 - numId numId_9
    https://name -name_10.000000 - numId numId_10
    https://name -name_11.000000 - numId numId_11
    https://name -name_12.000000 - numId numId_12
    https://name -name_13.000000 - numId numId_13
    https://name -name_14.000000 - numId numId_14
    https://name -name_15.000000 - numId numId_15
    https://name -name_16.000000 - numId numId_16
    https://name -name_17.000000 - numId numId_17
    https://name -name_18.000000 - numId numId_18
    https://name -name_19.000000 - numId numId_19
    https://name -name_20.000000 - numId numId_20
    https://name -name_21.000000 - numId numId_21
    https://name -name_22.000000 - numId numId_22
    https://name -name_23.000000 - numId numId_23
    https://name -name_24.000000 - numId numId_24
    https://name -name_25.000000 - numId numId_25
    https://name -name_26.000000 - numId numId_26

    那么问题就出现了,结构体和类做 model时候,有什么不同呢??????

    Swift中的类与结构体有如下相似点:
    
    1.定义属性来存储值。
    
    2.定义函数来提供功能。
    
    3.通过定义下标语法使用下标的方式取值。
    
    4.定义构造方法来对其进行初始化。
    
    5.通过扩展来在原始基础上添加功能。
    
    6.通过协议来定义实现标准。
    
    当然类和结构体也有许多不同点,下面这些功能是类独有的,结构体没有:
    
    1.通过继承来创建类的子类。
    
    2.在运行时允许对类的实例进行类型的检查和解释。
    
    3.析构方法可以释放被类引用的资源。
    
    4.通过引用计数允许一个类实例的多处引用。
    
    当开发者在代码中传递这些实例时,结构体总是被赋值,而类则是被引用。这是结构体和类的最本质区别。
  • 相关阅读:
    算法设计之hash---hash 函数、hash表
    图像处理之换脸---手把手教你使用 Deepfakes 换脸
    图像处理之搜图---实现以图搜图
    机器学习之python---Python实现逻辑回归(LogisticRegression)
    嵌入式开发之usb 转 net --- 支持持USB 网络适配器方案
    嵌入式开发之网卡--- Ethernet 以太网 MAC、MII、PHY、MDIO、IEEE802.3 详解
    机器学习之RNN ---LSTM原理及实现详解
    Docker的学习
    网络7层 4层 5层 协议
    netstat 查看端口、进程占用
  • 原文地址:https://www.cnblogs.com/Bob-blogs/p/6590491.html
Copyright © 2020-2023  润新知