美文网首页iOS程序猿
swift3.0学习笔记(一) 可选类型

swift3.0学习笔记(一) 可选类型

作者: Pamela_Liu | 来源:发表于2016-11-03 17:26 被阅读0次

    引入可选类型原因

    • 在OC中若一个变量木有赋值,系统会给一个默认值,但是swift木有默认值(注:木有值和值为0是两个不同哒概念),所以引入一个可选类型.

    可选类型的定义

    • 一个变量, 分为有值和木有值.
      可选类型可以保存nil.
    • 写法一:基本写法
    let name: Optional<String> = "123"
    
    • 写法二: 语法糖(常用)
    let name2: String? = "123"
    
    

    解包

    解包就是获取可选变量的真实值

    • 问题:若可选类型的值为nil,那么强制解包会报错
    解包的三种慌法:
    • 方法一:强制解包
    //直接判断,简单粗暴. 缺点:使用时需要加上!
    if kexuan != nil{
        kexuan!
    }
    
    • 方法二:可选绑定
    //此法较为优雅.先判断可选类型是否有值,若木有则返回false,若有值就强制解包,赋值给value
    
    if let value = kexuan{
        value
    }
    
    • 方法三:guard判断
    //提高程序的可读性
    func test(age:Int?){
        guard let value = age else {
            return
        }
        value
    }
    test(age: 16)
    

    应用场景

    // a. 把字符串转成int类型时,若为nil会报错.
    let str = "a123"
    let num = Int(str)
    num
    
    //b. 判断网址正确与否
    let url = URL(string:"http://😋www.baidu.com")
    
    //c. 创建图片啦
    let image = UIImage(named:"abc")
    
    //d. 函数问题
    func test2 (a:Int?){
        //内部考虑
    }
    //加入可选类型后,外界不需要处理
    //let aaaa:Int? = 90
    test2(a: 10)
    

    注意:

    • 可选类型不能直接用.
    let image = UIImage(named:"abc")
    //创建类,使用构造函数,所以imageView可以接收可选类型.
    let imageView = UIImageView(frame: CGRect(x: 100, y: 100, width: 200, height: 200))
    imageView.image = image
    
    • ! 的作用
    // ! 是指告诉编译器我知道它是可选类型,在使用前一定是赋值过的.可以直接用.
    //但是这种转换方式不安全,一旦转换失败就会崩溃
    var cc: Int! = 666
    

    结语:本人程序媛小白一只,有激励才有成长😝,望众大神轻喷~

    相关文章

      网友评论

        本文标题:swift3.0学习笔记(一) 可选类型

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