基本函数使用
- 1.没有参数没有返回值
//about函数名,Void为返回值
func about() -> Void {
print("iPhone7s Plus")
}
//无返回值 省略写法
func about1() {
print("iPhone7s")
}
//调用
about()
- 2.有参数没有返回值
func callPhone(phoneNum :
String) {
print("打电话给\(phoneNum)")
}
//调用
callPhone("+86 110")
- 3.没有参数有返回值
func readMessage() -> String {
return "吃饭了吗?"
}
//调用
print(readMessage())
- 4.有参数有返回值
func sum(num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
//调用
sum(20, num2: 30)
类的定义
1.类的定义
2.创建类对应的对象
3.给类的属性赋值
1> 直接赋值
2> 通过KVC赋值
4.可以重写setValue(value: AnyObject?, forUndefinedKey key:,那么字典中没有的字段可以在类中没有对应的属性
5.override : 重写, 如果写的某一个方法是对父类的方法进行的重写,那么必须在该方法前加上override
- 1.类的定义
//Person类种有个属性age
class Person : NSObject {
var age : Int = 0
}
//调用
let p = Person()
p.age = 20
//或者使用KVC赋值
p.setValuesForKeysWithDictionary(["age" : 18])
- 重写方法
class Person : NSObject {
var age : Int = 0
// override : 重写, 如果写的某一个方法是对父类的方法进行的重写,那么必须在该方法前加上override
override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
}
//调用 原本没有name属性,通过重写KVC
p.setValuesForKeysWithDictionary(["age" : 18, "name" : "why"])
- 2.类中的属性定义
nil算swift中的特殊类型,不可直接赋值,要使用可选类型
class Student: NSObject {
// 定义属性
// 定义存储属性
var age : Int = 0
var name : String? //var name : String? = nil
var mathScore : Double = 0.0
var chineseScore : Double = 0.0
// 定义计算属性: 通过别的方式计算到结果的属性,称之为计算属性
//或者使用下面的 定义方法 返回平均值
var averageScore : Double {
return (mathScore + chineseScore) * 0.5
}
// 定义类属性: 类属性是和整个类相关的属性.而且是通过类名进行访问
static var courseCount : Int = 0
/*
// 定义方法,可以返回平均成绩
func getAverageScore() -> Double {
// 在swift开发中,如果使用当前对象的某一个属性,或者调用当前对象的某一个方法时,可以直接使用,不需要加self
return (mathScore + chineseScore) * 0.5
}
*/
}
// 创建对象
let stu = Student()
// 给类属性进行赋值
Student.courseCount = 2
// 给对象的属性赋值
stu.age = 10
stu.name = "yz"
stu.mathScore = 78
stu.chineseScore = 59.9
//打印age和name
print(stu.age)
// print(stu.name!) 或者下面
if let name = stu.name {
print(name)
}
//打印 定义属性
let averageScore = stu.averageScore
print(averageScore )
构造函数
//OC 写法
@interface Person : NSObject
- (instanceType)initWithName:(NSString *)name age: (int)age
@end
//swift 写法
class Person: NSObject {
var name : String?
var age : Int = 0
override init() {
// 在构造函数中,如果没有明确super.init(),那么系统会帮助调用super.init()
//init为系统方法,这里算重写,需要加上,override
// super.init()
print("------")
}
// 自定义构造函数
init(name : String, age : Int) {
self.name = name
self.age = age
}
}
let p = Person()
//调用
let p1 = Person(name: "why", age: 18)
//打印
print(p1.age)
print(p1.name!)
监听类的属性变化
class Person: NSObject {
// 属性监听器
var name : String? {
// 属性即将改变时进行监听(不常用)
willSet {
print(name)
print(newValue)
}
// 属性已经改变时进行监听(常用)
didSet {
print(name)
print(oldValue)
}
}
}
网友评论