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)

相關文章

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.