基本函數(shù)使用
- 1.沒(méi)有參數(shù)沒(méi)有返回值
//about函數(shù)名兔魂,Void為返回值
func about() -> Void {
print("iPhone7s Plus")
}
//無(wú)返回值 省略寫法
func about1() {
print("iPhone7s")
}
//調(diào)用
about()
- 2.有參數(shù)沒(méi)有返回值
func callPhone(phoneNum :
String) {
print("打電話給\(phoneNum)")
}
//調(diào)用
callPhone("+86 110")
- 3.沒(méi)有參數(shù)有返回值
func readMessage() -> String {
return "吃飯了嗎?"
}
//調(diào)用
print(readMessage())
- 4.有參數(shù)有返回值
func sum(num1 : Int, num2 : Int) -> Int {
return num1 + num2
}
//調(diào)用
sum(20, num2: 30)
類的定義
1.類的定義
2.創(chuàng)建類對(duì)應(yīng)的對(duì)象
3.給類的屬性賦值
1> 直接賦值
2> 通過(guò)KVC賦值
4.可以重寫setValue(value: AnyObject?, forUndefinedKey key:,那么字典中沒(méi)有的字段可以在類中沒(méi)有對(duì)應(yīng)的屬性
5.override : 重寫, 如果寫的某一個(gè)方法是對(duì)父類的方法進(jìn)行的重寫,那么必須在該方法前加上override
- 1.類的定義
//Person類種有個(gè)屬性age
class Person : NSObject {
var age : Int = 0
}
//調(diào)用
let p = Person()
p.age = 20
//或者使用KVC賦值
p.setValuesForKeysWithDictionary(["age" : 18])
- 重寫方法
class Person : NSObject {
var age : Int = 0
// override : 重寫, 如果寫的某一個(gè)方法是對(duì)父類的方法進(jìn)行的重寫,那么必須在該方法前加上override
override func setValue(value: AnyObject?, forUndefinedKey key: String) {}
}
//調(diào)用 原本沒(méi)有name屬性癌瘾,通過(guò)重寫KVC
p.setValuesForKeysWithDictionary(["age" : 18, "name" : "why"])
- 2.類中的屬性定義
nil算swift中的特殊類型,不可直接賦值所森,要使用可選類型
class Student: NSObject {
// 定義屬性
// 定義存儲(chǔ)屬性
var age : Int = 0
var name : String? //var name : String? = nil
var mathScore : Double = 0.0
var chineseScore : Double = 0.0
// 定義計(jì)算屬性: 通過(guò)別的方式計(jì)算到結(jié)果的屬性,稱之為計(jì)算屬性
//或者使用下面的 定義方法 返回平均值
var averageScore : Double {
return (mathScore + chineseScore) * 0.5
}
// 定義類屬性: 類屬性是和整個(gè)類相關(guān)的屬性.而且是通過(guò)類名進(jìn)行訪問(wèn)
static var courseCount : Int = 0
/*
// 定義方法,可以返回平均成績(jī)
func getAverageScore() -> Double {
// 在swift開(kāi)發(fā)中,如果使用當(dāng)前對(duì)象的某一個(gè)屬性,或者調(diào)用當(dāng)前對(duì)象的某一個(gè)方法時(shí),可以直接使用,不需要加self
return (mathScore + chineseScore) * 0.5
}
*/
}
// 創(chuàng)建對(duì)象
let stu = Student()
// 給類屬性進(jìn)行賦值
Student.courseCount = 2
// 給對(duì)象的屬性賦值
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 )
構(gòu)造函數(shù)
//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() {
// 在構(gòu)造函數(shù)中,如果沒(méi)有明確super.init(),那么系統(tǒng)會(huì)幫助調(diào)用super.init()
//init為系統(tǒng)方法,這里算重寫,需要加上,override
// super.init()
print("------")
}
// 自定義構(gòu)造函數(shù)
init(name : String, age : Int) {
self.name = name
self.age = age
}
}
let p = Person()
//調(diào)用
let p1 = Person(name: "why", age: 18)
//打印
print(p1.age)
print(p1.name!)
監(jiān)聽(tīng)類的屬性變化
class Person: NSObject {
// 屬性監(jiān)聽(tīng)器
var name : String? {
// 屬性即將改變時(shí)進(jìn)行監(jiān)聽(tīng)(不常用)
willSet {
print(name)
print(newValue)
}
// 屬性已經(jīng)改變時(shí)進(jìn)行監(jiān)聽(tīng)(常用)
didSet {
print(name)
print(oldValue)
}
}
}