美文网首页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学习笔记(一) 可选类型

    引入可选类型原因 在OC中若一个变量木有赋值,系统会给一个默认值,但是swift木有默认值(注:木有值和值为0是两...

  • swift 3.0

    swift3.0学习 可选值 可选值:有可能被设置为nil,所有类型都可以被设置.?表示不能拿来运算.!强制解包,...

  • Swift3.0 - 可选类型

    在编程世界中有一种非常通用的模式,那就是某个操作是否要返回一个有效值。 在 Objective-C 中,对 nil...

  • ★ iOS高级:Swift入门精讲③ 01 swift编程-07

    前言:本篇仅为视频学习笔记 可选项 (Optional)★ 可选项,一般也叫可选类型,它允许将值设置为nil。例...

  • Swift学习笔记(元组/可选类型)

    元组 元组(tuples)把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型。 元组的使用场景...

  • swift 学习笔记之可选类型

    可选类型(可以有值, 也可以没有值) 在OC中我们可以给一个对象类型变量赋值为nil或者一个对象, 而在Swift...

  • Swift学习笔记之可选类型

    和OC相比 可选类型是一个从OC走向Swift的第一个吸引目光的地方,OC是弱类型语言,所以没有可选类型的概念。 ...

  • swift学习笔记④

    Swift学习笔记 - 文集 语法篇 一、可选类型 Optional Swift 中,常量和变量是不允许赋予 ni...

  • Swift学习笔记(一)-- 变量、元组、可选类型、

    1 变量和常量 常量&变量的使用原则:为保证数据的安全性尽量先用 let,只有需要改变的时候才使用 var 定义常...

  • Swift3.0 - 属性

    Swift3.0 - 真的很简单Swift3.0 - 数据类型Swift3.0 - ArraySwift3.0 -...

网友评论

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

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