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)
转载于:https://www.cnblogs.com/dhui69/p/11159800.html
Swift 类的使用class相关推荐
- Swift类与OC类方法相互调用的
2019独角兽企业重金招聘Python工程师标准>>> 收集整理,希望对大家有帮助 1.OC调用Swift实例方法 例如在ViewController.m类里调用Swift的logM ...
- Swift 类和结构体总结
Swift 类和结构体总结 类和结构体都是多功能而且灵活的结构,它们可以作为构建块(building block)在代码中使用.你可以为类和结构体定义属性和方法来扩充它们的功能.对于自定义类,Swif ...
- Swift —— 类与结构体
Swift -- 类与结构体 1. 初识类与结构体 1.1 异同点 1.2 类(引用类型) 1.3 结构体 (值类型) 1.4 类和结构体的内存位置 1.4.1 结构体的内存位置 1.4.2 类的内存 ...
- Swift - AppDelegate.swift类中默认方法的介绍
项目创建后,AppDelegate类中默认带有如下几个方法,具体功能如下: 1,应用程序第一次运行时执行 这个方法只有在App第一次运行的时候被执行过一次,每次App从后台激活时都不会再执行该方法. ...
- Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等
一.类与结构体 两者在Swift中差不了多少了 类与结构体有很多相同的地方: (第2,3点是其他语言中不存在的) 1)都可以定义属性/方法/下标(结构体也可以定义方法了) 2)都能初始化(通过构造方法 ...
- Swift类扩展使用方法
2019独角兽企业重金招聘Python工程师标准>>> Swift是没有OC中的分类的. 但可以进行类扩展, 一般用于实现代理方法. 类扩展中无法定义属性 使用方法: extensi ...
- Swift项目中不能定义OC类继承Swift类
2019独角兽企业重金招聘Python工程师标准>>> 报错原因 Swift项目中 OC文件类 继承 Swift文件类 Cannot subclass a class with ...
- Swift 类与结构体
前言 类和结构体是人们构建代码所用的一种通用且灵活的构造体.我们可以使用完全相同的语法规则来为类和结构体定义属性(常量.变量)和添加方法,从而扩展类和结构体的功能. 与其他编程语言所不同的是,Swif ...
- 如何在OC类里 调用swift类
一.OC调用swift文件 在OC项目中创建一个swift文件的时候,Xcode 会提示 需要创建一个桥接文件,点确定创建桥接文件,Xcode会自动创建一个桥接文件 名字:工程名-Bridging-H ...
最新文章
- 十分钟带你入门最具Python风格的Gui库
- Spring中使用缓存时你应该知道的知识
- Java 统计字母个数
- oauth2 增加token 返回参数_一张图搞定OAuth2.0
- 串结构练习——字符串匹配 解题报告
- Windows上安装MinGW(GCC),各个Package的作用
- 【转】linux/unix下 pid文件作用浅析
- Mysql命令行改动字段类型
- python2 和 python3 在print时的细微差别 (sep等操作)
- Android开发之动态加载,运行未安装apk
- java读取properties文件详解
- 信号完整性分析学习--16--传输线效应
- ffmpeg显卡快速压制单/双语字幕视频
- Milking Cows /// 区间计数 离散化排序 oj10105
- 利用学信网免费激活PyCharm企业版(也适用所有其它JetBrains的IDE)
- HCIA—网络基本知识—双绞线(文字 + 图解)
- 室内设计优美语句_赞美家装设计师的句子
- 惠普win7笔记本耳机没声音
- ABBYY FineReader 15如何比较文档?
- java cookie设置注意事项
热门文章
- Mysql改写子查询SQL优化案例
- 鸿蒙引领着未来,华为智慧屏V65图赏:鸿蒙OS引领未来
- python中等于列表的某一个值为真,python – 获取值等于特定值的列表中的所有元素...
- python情感分析算法_Python 情感分析
- 双系统 android 华硕,华硕发布Duet TD300,首款真正Windows+安卓双系统笔记本
- IDEA 同一个工程下不同模块之间的类相互调用
- Java中udp/tcp的发送和接收
- Git实现从本地添加项目到远程仓库
- Android开发笔记(一百六十四)仿京东首页的下拉刷新
- python如何使用web3py与以太坊投资智能合约交互