swift 函数基本使用和类定义

2016-09-24  本文已影响106人  黑色桃芯

基本函数使用

//about函数名,Void为返回值
func about() -> Void {
    print("iPhone7s Plus")
}
//无返回值 省略写法
func about1() {
    print("iPhone7s")
}
//调用
about()
func callPhone(phoneNum : 
String) {
    print("打电话给\(phoneNum)")
}
//调用
callPhone("+86 110")
func readMessage() -> String {
    return "吃饭了吗?"
}
//调用
print(readMessage())
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

//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"])

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)
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读