Swift 类的使用class
阅读原文时间:2023年07月09日阅读:2

/*

类属性的介绍

Swift中类的属性有多种

1.存储属性:存储示例的常量和变量

2.计算属性:通过某种方式计算出来的属性

3.类属性:与整个类自身相关的属性

存储属性

存储属性是最简单的属性,它作为类实例的一部分,用于存储常量和变量

可以给存储属性提供一个默认值,也可以在初始化方法中对其进行初始化

*/

class Student{

//存储属性

var name:String = ""

var mathScore:Double=0.0

var chineseScore:Double=0.0

//计算属性-->只读属性

var averageScore:Double{

return (chineseScore+mathScore)*0.5

}

//类属性:和整个类相关的属性,并且是通过类名进行访问

static var courseCount:Int=0

//    //给类扩充函数

//    func getAverageScore()->Double {

//        return (chineseScore+mathScore)*0.5

//    }

}

let stu=Student()

stu.name="jack"

stu.mathScore=80

stu.chineseScore=90

Student.courseCount=2

print(stu.averageScore)

/*

监听类属性的改变

*/

class Person{

var name:String = "aa" {

//选择其中之一即可

//监听属性即将发生改变,还没有改变

willSet{

print("属性即将改变\(name)")

}

//监听属性已经发生改变,已经发生改变

didSet{

print("属性发生改变\(name)")

}

}

var age:Int = 0 {//选择其中之一即可

//监听属性即将发生改变,还没有改变

willSet(newAge2222){

print(newAge2222)

print("属性即将改变\(age)")

}

//监听属性已经发生改变,已经发生改变

didSet(oldAge1){

print(oldAge1)

print("属性发生改变\(age)")

}

}

}

let p = Person()

p.name="jack"

p.age=100

/*

类的构造函数

*/

class Person2{

var name:String = ""

var age:Int = 0

init(dict:[String:Any]) {

if let name = dict["name"] as? String {

self.name=name

}

if let age = dict["age"] as? Int {

self.age=age

}

}

}

let p2 = Person2(dict: ["name":"jack","age":18])

print(p2.name,p2.age)

/*

使用KVC

1.必须继承自NSObject

2.必须在构造函数中,先调用suepr.init()

3.调用setValuesForKeys

4.如果字典中某一个key没有对应的属性,则需要重写setValue forUndefinedKey方法

*/

class Person3:NSObject{

@objc var name:String = ""

@objc var age:Int = 0

// MARK:- 自定义构造函数

override init() {

}

init(dict:[String:Any]) {

super.init()

setValuesForKeys(dict)

}

override func setValue(_ value: Any?, forUndefinedKey key: String) {

}

//    override func setValue(_ value: Any?, forKey key: String) {

//        //print(key)

//    }

//重写析构函数,监听对象的销毁

deinit{

print("对象销毁")

}

}

let p3 = Person3(dict: ["name":"jack22","age":28,"phoneNum":"+86 110"])

print(p3.name,p3.age)

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章