美文网首页
swift第二课续

swift第二课续

作者: 倾心cyan | 来源:发表于2016-10-18 16:42 被阅读3次

一. 函数的注意事项

1. 内部参数和外部参数

默认情况下, 函数中的所有参数都是内部参数, 从第二个参数开始既是内部参数也是外部参数,如果希望第一个参数也是外部参数, 可以在标识符前给该参数添加一个别名

2. swift中的默认参数

func makeCoffee(coffeeName : String = "雀巢") -> String{
    return "制作一杯\(coffeeName)咖啡"
}

3. 可变参数

参数个数可变时 加...

func sum(num : Int...) -> Int {
    var result = 0
    for n in sum {
        result += n
    }
    return result
}

4. 指针类型

可修改某些变量的数值

var m = 20
var n = 30

func swapNum (inout m : Int, inout n : Int) {
    let temp = m
    m = n
    n = temp
}

swapNum(&m, n:&n)  //m = 30 , n = 20

5. 函数的嵌套使用

func test() {
    func demo() {
        print ("demo")
    }
    print ("test")
    demo()
}

//打印内容 :
test
demo

二. 类

1. 类的基本使用

//1. 类的定义
class Person : NSObject {
    var age : Int = 0 //类的属性是可变的
}
//2. 创建类对应的对象
let p = Person()
//3. 给类的属性赋值
p.age = 20 //直接赋值
p.setValuesForKeysWithDictionary (["age" : 18]) //通过KVC赋值

4.可以重写setValue(value: AnyObject?, forUndefineKey key:, 那么字典中没有的字段可以在类中没有对应的属性)

5.override : 重写, 如果写的某一个方法是对父类的方法进行的重写, 那么必须在该方法前加上override

2. 属性

定义存储属性

class Student : NSObject {
    var age : Int  = 0
    var name : String? //可选类型初始化时默认为nil
}

定义计算属性

计算属性: 通过别的方式计算到结果的属性, 称为计算属性

class Student : NSObject {
    var age : Int  = 0
    var name : String? //可选类型初始化时默认为nil
    
    //定义计算属性
    var mathScore = 90
    var chineseScore = 80
    var averageScore : Double{
        return (mathScore + chineseScore) * 0.5
    }
}

定义类属性

类属性是和整个类相关的属性, 是通过类名进行访问的

用static 修饰

class Student : NSObject {
    var age : Int  = 0
    var name : String? //可选类型初始化时默认为nil
    
    //定义类属性
    static var courseCount : Int = 2 
}

属性监听器

class Student : NSObject {
    var age : Int  = 0
    var name : String? //可选类型初始化时默认为nil
    
    var height : Int {
        //即将改变时进行监听
        willSet {
            print(height)
            print(newValue)
        }
        //已经改变时进行监听
        didSet {
            print(height)
            print(oldValue)
        }
        
    }
        
}

构造函数

class Student : NSObject {
    var age : Int  = 0
    var name : String? //可选类型初始化时默认为nil
    
    //重写init 方法
    override init() {
        //构造函数中如果没有明确 super.init(), 那么系统会帮助调用super.init()
        //super.init()
        print("创建一个对象")
    }   
    
    //自定义构造函数
    init (name : String, age : Int) {
        self.age = age
        self.name = name
    }
    
    init(dict : [String : AnyObject]) {
        let tempName = dict["name"]
        name  = tempName as? String
        let tempAge = dict["age"]
        age = tempAge as! Int
        
        //tempName 是一个AnyObject?, 转成String?
        //as? 最终转成的类型是一个可选类型
        //as! 最终转成的类型是一个确定的类型
        
        //不过这样是不安全的 要这样写
        if let tempAge = dict["age"] as? Int {
            age = tempAge
        }
    }
    
}

相关文章

  • swift第二课续

    一. 函数的注意事项 1. 内部参数和外部参数 默认情况下, 函数中的所有参数都是内部参数, 从第二个参数开始既是...

  • Stanford CS193p iOS开发 课堂作业(1)

    在进行了第一课Logistics,iOS8 Overview.和第二课More Xcode and Swift,M...

  • swift第二课

    importFoundation c语言的switch switch(变量)case value1:{代码块(如果...

  • Swift第二课

    一.字符串 在OC中字符串类型是NSString,在swift中字符串类型是String OC中字符串@"",sw...

  • iOS开发 - 「Swift 学习」String创建及转化

    之前断断续续的学习了一段时间的Swift,一直拖延没有进行系统的学习,在此立个flag准备正式进军Swift了! ...

  • 开始用Swift写写小应用

    前言: 自去年12月期间就断断续续的把Swift的语法部分看完了,但是后面今年上半年杂事太多,没把Swift的学习...

  • iOS(Swift) Provider续-CollectionP

    本篇为续篇TableProvider[https://www.jianshu.com/p/57c9fa16a0f5...

  • 开启Swift 学习之旅,

    一年前当时Swift刚更新到版本2 +的时候,就开始使用过学习Swift的基础语法,陆续写过一些demo 自己玩,...

  • Swift 3 迁移工作总结

    写在前面 Swift 3.0 正式版发布了差不多快一个月了,断断续续的把手上和 Swift 相关的迁移到了Swif...

  • Hello ---- Swift

    自从14年6月份WWDC以来,断断续续对Swift一直是关注,偶尔看看没有做过系统的学习,接下来的时间对Swift...

网友评论

      本文标题:swift第二课续

      本文链接:https://www.haomeiwen.com/subject/hsdtuttx.html