/*

类属性的介绍

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)

转载于:https://www.cnblogs.com/dhui69/p/11159800.html

Swift 类的使用class相关推荐

  1. Swift类与OC类方法相互调用的

    2019独角兽企业重金招聘Python工程师标准>>> 收集整理,希望对大家有帮助 1.OC调用Swift实例方法 例如在ViewController.m类里调用Swift的logM ...

  2. Swift 类和结构体总结

    Swift 类和结构体总结 类和结构体都是多功能而且灵活的结构,它们可以作为构建块(building block)在代码中使用.你可以为类和结构体定义属性和方法来扩充它们的功能.对于自定义类,Swif ...

  3. Swift —— 类与结构体

    Swift -- 类与结构体 1. 初识类与结构体 1.1 异同点 1.2 类(引用类型) 1.3 结构体 (值类型) 1.4 类和结构体的内存位置 1.4.1 结构体的内存位置 1.4.2 类的内存 ...

  4. Swift - AppDelegate.swift类中默认方法的介绍

    项目创建后,AppDelegate类中默认带有如下几个方法,具体功能如下: 1,应用程序第一次运行时执行 这个方法只有在App第一次运行的时候被执行过一次,每次App从后台激活时都不会再执行该方法. ...

  5. Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

    一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法 ...

  6. Swift类扩展使用方法

    2019独角兽企业重金招聘Python工程师标准>>> Swift是没有OC中的分类的. 但可以进行类扩展, 一般用于实现代理方法. 类扩展中无法定义属性 使用方法: extensi ...

  7. Swift项目中不能定义OC类继承Swift类

    2019独角兽企业重金招聘Python工程师标准>>> 报错原因 Swift项目中 OC文件类  继承  Swift文件类 Cannot subclass a class with ...

  8. Swift 类与结构体

    前言 类和结构体是人们构建代码所用的一种通用且灵活的构造体.我们可以使用完全相同的语法规则来为类和结构体定义属性(常量.变量)和添加方法,从而扩展类和结构体的功能. 与其他编程语言所不同的是,Swif ...

  9. 如何在OC类里 调用swift类

    一.OC调用swift文件 在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件 名字:工程名-Bridging-H ...

最新文章

  1. strstr php文档,php字符串函数学习之strstr()
  2. python速度比较_Python和C运算速度对比实测
  3. 东北天到ecef的变换_GNSS学习笔记-坐标转换
  4. 房地产企业的客户细分战略
  5. std list/vector sort 自定义类的排序就是这么简单
  6. paip.SVN merge分支合并到主干
  7. java课程设计实验报告_《java课程设计实验报告.doc
  8. ipad文献管理软件_五款常用的文献管理神软件
  9. jeb 高级教程之动态调试
  10. php 字符显示不出来,ps文字显示不出来怎么办?
  11. win102004优化_MSDN我告诉你:如何深度优化Win10 2004?
  12. delphi 10.3 (一) 控件安装和使用
  13. 系统全面的认识Solr
  14. 领英辅助工具领英精灵的下载安装的细节和方法
  15. 百度hacked事件看谷歌real-time search
  16. ollydbg打补丁
  17. android studio 混淆包,gogoapp体育-官网首页
  18. Spring Boot -- JPA
  19. mysql5.7源码安装 简书_在CentOS7上编译安装MySQL 5.7.13步骤详解
  20. C语言 | getchar()、getche()、getch()的区别?

热门文章

  1. 计算机的配置与选购调查报告,目前主流危机计算机的配置及选购的调查报告.doc...
  2. php coder 乱码,MySQL 乱码 与 字符集
  3. java正则表达式所有字符串_“JAVA”正则表达式如何匹配所有符合要求的子字符串?...
  4. python中if语句求最大值_Python中用max()方法求最大值的介绍
  5. 2输入一个字符判断是否属于a-zA-Z之间如果是请是属于a-z还是A-Z并且输出值。
  6. FTP与SFTP两者有什么区别
  7. vue js中解决二进制转图片显示问题
  8. -bash: locate: command not found
  9. 使用git-bash向码云提交项目
  10. 将springboot打包成的jar文件做成windows服务