在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
import UIKit
/*: 可选类型(可以有值, 也可以没有值) * 在OC中我们可以给一个对象类型变量赋值为nil或者一个对象, 而在Swift中如果想给一个变量赋值为nil那么必须明确指定为可选类型才可以, 也就是说普通变量是不能赋值为nil的 格式: 数据类型? * 以后但凡看到init后面跟上一个?, 就代表初始化方法返回的值是可选的 注意: * 可选类型是不能直接使用的, 如果向使用一个可选类型的值, 必须对可选类型进行解包 ! * 解包的含义: 告诉系统可选类型的变量, 一定有值, 如果可选类型的值没有值, 我们又进行了强制解包, 那么就会报错 建议 * 初学者学习Swift最最最蛋疼的问题就是? !这种语法, 刚开始可以借助Xocde编译器的提醒来完成? !, 以后写多了就知道什么时候写? , 什么时候写! */
let str = "http://www.520it.com/" let url = NSURL(string: str) print(url!)
let num1: Int? = 10 let num2: Int = 20 // 注意: Swift不推荐我们随便使用强制解包 let sum = num1! + num2 if let temp = num1 { let sum = temp + num2 }
/*: 可选绑定 * 专门用于解决强制解包的弊端 * 注意: 开发中如果想使用一个可选类型的值, 也不一定一定用可选绑定, 因为如果可选类型的值较多, 而又都属于同一个逻辑, 那么一不小心就会形成if嵌套 */ let url2 = NSURL(string: str) print(url2) // 取出url2的值赋值给temp, 如果取到了值那么就可以进入if后面的大括号, 如果没有取到值(nil), 就不会进入if后面的大括号 if let abc = url2 { print(abc) }
let v1: Int? = 10 let v2: Int? = 20 let v3: Int? = 30
if let n1 = v1 { if let n2 = v2 { if let n3 = v3 { let sum = n1 + n2 + n3 } } }
/*: guard * 作用: 类似可选绑定 * 只有条件为假(flase), 才会执行else后面大括号中的代码 格式 guard 条件表达式 else { // 条件为假就会执行 } */
func test() { guard let m1 = v1 else { print("没有值") return } guard let m2 = v2 else { print("没有值") return } guard let m3 = v3 else { print("没有值") return }
let sum = m1 + m2 + m3 } test()
|
请发表评论