class Person : NSObject{
var age : Int = 0
var name : String? = nil
override init() {
// 在构造函数中,如果没有明确super.init(),那么系统会制动帮助调用super.init()
// 系统调用都是在所有代码最后调用
}
}
let p = Person()
自定义构造函数
传递参数
class Person : NSObject{
var age : Int = 0
var name : String? = nil
// 自定义构造函数
init(name : String, age : Int) {
self.name = name
self.age = age
}
}
let p1 = Person(name: "lhy", age: 22)
if let name = p1.name {
print(name)
}
把字典当作参数传进去(一)
class Person : NSObject{
var age : Int = 0
var name : String? = nil
// 自定义构造函数
init(dict : [String : Any]) {
let tempName = dict["name"]
// tempName是一个Any?,转换成String?
// as? 最终转换成的类型是一个可选类型
// as! 最终转换成的类型是一个确定的类型
name = tempName as? String
if let age = dict["age"] as? Int {
self.age = age
}
}
}
let p2 = Person(dict: ["name" : "lht", "age" : 22, "height" : 1.80])
介绍构造函数类似于OC中的初始化方法:init方法默认情况下在创建一个类时,必然会调用一个构造函数即便是没有编写任何构造函数,编译器也会提供一个默认的构造函数如果是继承自NSObject,可以对父类的构造函数进行重写重写构造函数class Person : NSObject{ var age : Int = 0 var name : String? = niloverride init() { // 在构造函数中,如果没有明确super.init(),那么系