菜雞學(xué)Swift3.0 14.3 類(lèi)的構(gòu)造函數(shù) (系統(tǒng)構(gòu)造函數(shù)、自定義構(gòu)造函數(shù)、自定義字典類(lèi)型構(gòu)造函數(shù))

class Person {
      var name: String = ""
      var age: Int = 0

    // 系統(tǒng)構(gòu)造函數(shù)
    init(){
    
    }

    // 自定義構(gòu)造函數(shù)
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    // 自定義字典類(lèi)型構(gòu)造函數(shù) (單個(gè)轉(zhuǎn)換)
    init(dict: [String: Any]) {
        if let name = dict["name"] as? String {
            self.name = name
        }
        if let age = dict["age"] as? Int {
            self.age = age
        }
    }   
}

// 實(shí)例化 系統(tǒng)構(gòu)造函數(shù) Person()
let p1 = Person()
// 實(shí)例化 自定義構(gòu)造函數(shù) Person(name:"" , age:20)
let p2 = Person(name: "jack", age: 20)
// 實(shí)例化 自定義字典類(lèi)型構(gòu)造函數(shù)
let p3 = Person (dict: ["name": "Sun", "age": 25])

print(p3.name , p3.age)


/*
使用KVC條件
1. 必須繼承自 NSObject
2. 必須在構(gòu)造函數(shù)中,先調(diào)用super.init()
3. 調(diào)用 setValuesForKeys()
4. 如果字典中某一個(gè)Key沒(méi)有需要調(diào)用 override func setValue(_ value: Any?, forUndefinedKey key: String) {}
*/
class Person: NSObject {
    var name: String = ""
    var age: Int = 0

// KVC
    init(dict: [String: Any]) {
        super.init()
        setValuesForKeys(dict)
    }
    // 如果字典中某個(gè)Key沒(méi)有加上這句不報(bào)空
    override func setValue(_ value: Any?, forUndefinedKey key: String) {}

}

// 實(shí)例化 KVC
let p4 = Person(dict: ["name" : "Sun", "age" : 25])
print(p4.name , p4.age)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容