一 构造函数的介绍
- 构造函数类似于OC中的初始化方法:init方法
- 默认情况下载创建一个类时,必然会调用一个构造函数
- 即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数。
- 如果是继承自NSObject,可以对父类的构造函数进行重写
二 构造函数的基本使用
class Person: NSObject { var name : String var age : Int // 重写了NSObject(父类)的构造方法 override init() { name = "" age = 0 } } // 创建一个Person对象 let p = Person()
三 初始化时给属性赋值
class Person: NSObject { var name : String var age : Int // 自定义构造函数,会覆盖init()函数 init(name : String,age : Int) { self.name = name self.age = age } } // 创建一个Person对象 let p = Person(name: "why",age: 18)
四 字典转模型(初始化时传入字典)
- 真实创建对象时,更多的是将字典转成模型
- 注意:
- 去字典中取出的是NSObject,任意类型.
- 可以通过as!转成需要的类型,再赋值(不可以直接赋值)
class Person: NSObject { var name : String var age : Int // 自定义构造函数,会覆盖init()函数 init(dict : [String : NSObject]) { name = dict["name"] as! String age = dict["age"] as! Int } } // 创建一个Person对象 let dict = ["name" : "why","age" : 18] let p = Person(dict: dict)
五 字典转模型(利用KVC转化)
class Person: NSObject { // 结构体或者类的类型,必须是可选类型.因为不能保证一定会赋值 var name : String? // 基本数据类型不能是可选类型,否则KVC无法转化 var age : Int = 0 // 自定义构造函数,会覆盖init()函数 init(dict : [String : NSObject]) { // 必须先初始化对象 super.init() // 调用对象的KVC方法字典转模型 setValuesForKeysWithDictionary(dict) } } // 创建一个Person对象 let dict = ["name" : "why","age" : 18] let p = Person(dict: dict)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。