class Person: NSObject {
var name : String
var age : Int
// 重寫了NSObject(父類)的構(gòu)造方法
override init() {
name = ""
age = 0
}
}
// 創(chuàng)建一個Person對象
let p = Person()
class Person: NSObject {
var name : String
var age : Int
// 自定義構(gòu)造函數(shù),會覆蓋init()函數(shù)
init(name : String, age : Int) {
self.name = name
self.age = age
}
}
// 創(chuàng)建一個Person對象
let p = Person(name: "why", age: 18)
字典轉(zhuǎn)模型(初始化時傳入字典)
真實創(chuàng)建對象時,更多的是將字典轉(zhuǎn)成模型
注意:
去字典中取出的是NSObject,任意類型.
可以通過as!轉(zhuǎn)成需要的類型,再賦值(不可以直接賦值)
class Person: NSObject {
var name : String
var age : Int
// 自定義構(gòu)造函數(shù),會覆蓋init()函數(shù)
init(dict : [String : NSObject]) {
name = dict["name"] as! String
age = dict["age"] as! Int
}
}
// 創(chuàng)建一個Person對象
let dict = ["name" : "why", "age" : 18]
let p = Person(dict: dict)
字典轉(zhuǎn)模型(利用KVC轉(zhuǎn)化)
利用KVC字典轉(zhuǎn)模型會更加方便
注意:
KVC并不能保證會給所有的屬性賦值
因此屬性需要有默認值
基本數(shù)據(jù)類型默認值設置為0
對象或者結(jié)構(gòu)體類型定義為可選類型即可(可選類型沒有賦值前為nil)
class Person: NSObject {
// 結(jié)構(gòu)體或者類的類型,必須是可選類型.因為不能保證一定會賦值
var name : String?
// 基本數(shù)據(jù)類型不能是可選類型,否則KVC無法轉(zhuǎn)化
var age : Int = 0
// 自定義構(gòu)造函數(shù),會覆蓋init()函數(shù)
init(dict : [String : NSObject]) {
// 必須先初始化對象
super.init()
// 調(diào)用對象的KVC方法字典轉(zhuǎn)模型
setValuesForKeysWithDictionary(dict)
}
}
// 創(chuàng)建一個Person對象
let dict = ["name" : "why", "age" : 18]
let p = Person(dict: dict)