Swift 类的使用class
/*
类属性的介绍
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)
Swift 类的使用class的更多相关文章
- Swift互用性: 使用Objective-C特性编写Swift类(Swift 2.0版)-b
本节包括内容: 继承Objective-C的类(Inheriting from Objective-C Classes) 采用协议(Adopting Protocols) 编写构造器和析构器(Writ ...
- Swift学习笔记 - OC中关于NSClassFromString获取不到Swift类的解决方案
在OC和Swift混编的过程中发现在OC中通过NSClassFromString获取不到Swift中的类,调研了一下发现问题所在,下面是我的解决方案: 问题的发现过程 UIViewController ...
- swift类、继承、接口
import Foundation class Hello{ var _name:String?="swift global" init(name:String){ //定义类中有 ...
- swift 类和结构体
1:类和结构体定义 类和结构体分别通过关键字class 和struct定义. swift的编码风格是类class和结构体struct名字使用大写字母开头的匈牙利表示法,相反的.类的方法和属性则用小写字 ...
- Swift 类构造器的使用
Swift 中构造器需要遵循的规则还是很多的, 总结一下, 有以下规则: 调用相关 指定构造器必须调用它直接父类的指定构造器方法. 便利构造器必须调用同一个类中定义的其它初始化方法. 便利构造器在最后 ...
- swift 类 与 结构体
这两天突然有人问我 swift里面 类和 结构体 有什么区别? 说实在的本人目前不太看好swift,相信很多人也是,oc 都 很成熟了. 本人目前不打算深入了解swift的原因swift 语言 ...
- Swift类与结构体
类和结构体有很多共性: 定义属性存储数据 定义方法执行功能处理 定义下标,通过下标访问他们的值 初始化他们的状态 通过扩展(Extension)扩展其功能 遵守协议(Protocol),协议提供一种特 ...
- Swift: 类与结构体
对比类与结构体 类与结构体有许多的相同点,它们都可以: 定义属性来存储值: 定义方法来提供功能: 定义下标操作: 定义初始化函数: 扩展它的默认的实现: 遵从协议: 类有一些额外的能力,但是结构体没有 ...
- Swift—类的继承-备
Swift中的继承只能发生在类上,不能发生在枚举和结构体上.一个类可以继承另一个类的方法.属性.下标等特征,当一个类继承其他类时,继承类叫子类,被继承类叫父类(或超类).子类继承父类后,可以重写父类的 ...
- Swift类和结构体定义-备
Swift中的类和结构体定义的语法是非常相似的.类使用class关键词定义类,使用struct关键词定义结构体,它们的语法格式如下: class 类名 { 定义类的成员 } struct 结构体名 { ...
随机推荐
- HTTP报文结构及Cookie、session区别
目录 万维网 HTTP超文本传输协议 特点 HTTP的报文结构. 下面介绍http请求报文最主要的一些特点 在服务器上存放用户的信息(Cookie) 实例: 工作原理: cookie中的主要内容: C ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:让按钮看起来像个链接 (仍然保留按钮行为)
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 【剑指Offer面试编程题】题目1513:二进制中1的个数--九度OJ
题目描述: 输入一个整数,输出该数二进制表示中1的个数.其中负数用补码表示. 输入: 输入可能包含多个测试样例. 对于每个输入文件,第一行输入一个整数T,代表测试样例的数量.对于每个测试样例输入为一个 ...
- Keras入门——(5)长短期记忆网络LSTM(二)
参考: https://blog.csdn.net/zwqjoy/article/details/80493341 https://blog.csdn.net/u012735708/article/d ...
- Android加载手机磁盘上的资源---decodeFile方法的使用
一般在写Android程序时,通常会将图片资源放在/res/drawable/文件夹下,读取时,通过R.drawable.imageId即可读取图片内容,但用户在使用时,一般会想要读取存放在存储卡上的 ...
- tomcat重载web项目,debug
Reloading Context with name [/testCookie] is completed 加载上下文名称[ / ]完成testcookie //start九月 05, 2017 9 ...
- Django 连接 Mysql (8.0.16) 失败
首先,确认数据库配置正确无误: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # or use: mysql.con ...
- CH11 关联容器
关联容器与顺序容器有着根本的不同:关联容器中的元素是按关键字来保存和访问的,而顺序容器是按它们在容器中的位置来顺序保存和访问的.两个主要的关联容器:map和set map 中的元素的是一个key-va ...
- IOS UIKIT_EXTERN, __attribute__((visibility ("default"))) 是啥玩意?
问题提出 在学习IOS时候,碰到一个函数NSStringFromCGPoint (UIGeometry.h) 其原型是 UIKIT_EXTERN NSString *NSStringFromCGPoi ...
- 禁用UpdateOrchestrator重新启动任务
LTSC2019 联网下载更新后,总是用户不使用电脑的时候重启更新系统. 搜索发现是计划任务中\Microsoft\Windows\UpdateOrachestrator重新任务的导致的. 查看这个任 ...