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.通過引用計數允許一個類實例的多處引用。

當開發者在代碼中傳遞這些實例時,結構體總是被賦值,而類則是被引用。這是結構體和類的最本質區別。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM