可选项是所有 Objective - C 刚接触 Swift 时候,有点难度的问题
1. 明确可选项的概念
2. 实际开发中, 借助 Xcode 智能提示,帮助修改!
3. 每次修改,都要思考为什么! 示例代码:
func demo4(){
let urlString = "http://www.baidu.com/中文"
//注意: 构造函数如果有 '?' 表示不一定能够创建出对象
let url = NSURL(string : urlString)
print(url)
//注意: 如果参数中,没有 ? 表示必须要有值,如果为 nil 就崩!
if url != nil{
let request = NSURLRequest(url: url! as URL)
print(request)
}
}
4. 可选项: 一个变量,可以为本身的类型,也可以为 nil 示例代码:
func demo3(){
//定义变量 / 常量如果需要指定类型 : 类型的方式指定准确的类型
let x : Double = 20
print(x + 1.5)
//可选项 使用 ? 定义
//y 可以是一个整数/也可以是nil,如果是变量,默认是 nil
//注意: 可选项在输出的时候,会提示 Optional
var y : Int? //= 10
print(y)
// * 可选项不能直接计算
// ! - '强行解包' - 程序员承诺 y 一定有值,如果没有,就崩溃
//每次写 !的时候,都需要去想,是不是有可能为 nil
print(y! + 20)
}
5. 替换运算符
5.1 var 的可选项默认值是 nil
5.2 let 的可选项没有默认值,必须要设置初始值
5.3 示例
func demo2(){
let oName : String? //= "小李"
//定义常量的时候,如果只指定了类型,没有设置初始值,可以有一次设置机会
oName = "老李"
if oName != nil {
print(oName! + "好")
}
//?? 操作符号,可以判断之前的变量是否为 nil 如果为 nil,使用后面的替换
print((oName ?? "") + "你好!")
print("------")
// ??运算符号优先级 ‘低’
print(oName ?? "" + "你好!")
}