swift 自訂類的建構函式,有參構造、無參構造

來源:互聯網
上載者:User
import UIKitclass person : NSObject {    var name : String?    var age : Int = 0        //1.重寫父類的初始化方法    override init(){        //在建構函式中,如果沒有明確調用super.init(),那麼系統會自動幫你調用super.init()        super.init()                print("-------")    }        //2.自訂建構函式,直接追加參數    init(name:String , age:Int) {        self.name = name        self.age = age    }    /*    //3.1自訂建構函式,使用字典作為參數   (第一種方法)    init(dict : [String:Any]) {        let tempName1 = dict["name"] //此時得到的tempName1是Any。任意的可選類型        let tempAge1 = dict["age"] //此時得到的tempAge1是Any。 任意的可選類型        //as?最終轉成的類型是一個可選類型        //as!最終轉成的類型是一個確定類型        let tempName2 = tempName1 as? String //此時得到的tempName2是String。 字串的任意類型        name = tempName2 //swift是強型別語言,只有相同的類型才可以賦值                //第一種age賦值方法,不安全如果字典中沒有傳age參數會崩潰        //let tempAge2 = tempAge1 as! Int //此時得到的tempAge2是Int Int類型        //age = tempAge2 //swift是強型別語言,只有相同的類型才可以賦值                        //第二種age賦值方法,如果字典中沒有傳age參數不會造成崩潰        if let tempAge = tempAge1 as? Int {//先把任意可選類型轉化成Int。可選類型,再使用可選綁定拿到int值                        self.age = tempAge        }    }*/            //3.2自訂建構函式,使用字典作為參數   (第二種方法)    init(dict:[String:Any]) {        super.init()        setValuesForKeys(dict)    }            //避免字典參數中傳的參數在類中沒有定義相應的屬性造成崩潰,重寫此方法    override func setValue(_ value: Any?, forUndefinedKey key: String) {            }        }//建立person對象let p1 = person()//使用有參構造建立person對象let p2 = person(name:"zhengyanfeng" , age:18)print(p2.name!,p2.age)//使用以字典為參數的有參構造建立對象let p3 = person(dict: ["name":"zhengyanfeng","age":17,"height":1.88])print(p3.name! , p3.age)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.