18.swift-类的实例创建

2021-07-22  本文已影响0人  ChaosHeart

//: Playground - noun: a place where people can play

import UIKit

/*
人类
*/

class Person:NSObject {
var name = "姓名";
var age = 0;
var sex = "性别";

//1.构造函数
override init(){

// 重载父类方法,指的是先走父类的方法
// 在构造函数中,如果没有明确super.init(),系统就会帮助调用
super.init();
print("---");
}

//2.自定义构造函数
init(name:String,age:Int){
    self.name = name;
    self.age = age;
}

//3.字典
init(dict:[String:Any]){
    self.name = dict["name"] as! String;
    self.age = dict["age"] as! Int;
    //可选绑定
    if let tempSex = dict["sex"] as? String{
        sex = tempSex;
    }
}

//4.kvc
init(dic:[String:Any]){
    super.init();
    setValuesForKeys(dic);
}

//防崩溃 - 找不到key
override func setValue(_ value: Any?, forUndefinedKey key: String) {
    
}
//防崩溃 - 找不到value
override func setNilValueForKey(_ key: String) {
    
}

}

//1.构造函数
var p = Person();

//2.自定义构造函数
var p1 = Person.init(name: "姓名", age: 18);
print(p1.name);
print(p1.age);

//3.字典
var dict = ["name":"小明","age":20,"sex":"女"] as [String : Any];
var p2 = Person.init(dic: dict);
print(p2.name);
print(p2.age);

//4.kvc
var dic = ["name":"小明","age":20,"sex":"女"] as [String : Any];
var p3 = Person.init(dic: dic);
print(p3.name);
print(p3.age);

上一篇 下一篇

猜你喜欢

热点阅读