import UIKit
// 类中所有的属性在对象初始化时,必须有初始化值
class Person : NSObject {
var name : String?
var view : UIView?
}
// 1.定义可选类型
// 1>普通定义可选类型的方式
// var name : Optional<String>
// 2>语法糖
var name : String?
// 2.给可选类型赋值
name = "why"
// 3.从可选类型中取值
// Optional("why")
print(name)
// 从可选类型中取值:可选类型!-->强制解包
//print(name!)
// 4.注意:如果可选类型中没有值,那么强制解包程序会崩溃
// 强制解包是非常危险的操作:建议在解包前先判断可选类型中是否有值
if name != nil {
print(name!)
print(name!)
print(name!)
}
// 5.可选绑定
// 1> 判断name是否有值,如果没有值,则不执行{}.
// 2> 如果有值,则对可选类型进行解包,并且将解包后的值赋值给前面的常量
//if let tempName = name {
// print(tempName)
//}
if let name = name {
print(name)
print(name)
print(name)
print(name)
}
/*
可选值: optionals有两种状态:
1.有值 2.没有值, 没有值就是nil
*/
//有值:
var optValue1: Int? = 9
//没有值:
var optValue2: Int?
var optValue3: Int? = nil
/*
可选值可以利用if语句来进行判断
*/
var optValue4: Int?
if optValue4 != nil
{
print(optValue4)
}else
{
print(optValue4)
}
/*
提取可选类型的值(强制解析)
会将optValue中的整型值强制拿出来赋值给变量result, 换句话说就是告诉编译器optValue一定有值, 因为可选类型有两种状态有值和没有值, 所以需要告诉编译器到底有没有值
需要注意的是如果强制解析optValue, 但是optValue中没有值时会引发一个运行时错误
*/
var optValue5: Int? = 9
var result1: Int = optValue5!
print(result1)
//报错:
var optValue6: Int?
var result2: Int = optValue6!
print(result2)
/*
可选绑定:
为了更安全的解析可选类型的值, 一般情况下使用可选绑定
如果optValue没有值就不会做任何操作, 如果optValue有值会返回true并将optValue的值赋值给result执行大括号中的内容
*/
var optValue: Int? = 9
if let result3 = optValue
{
print(result3)
}
可选类型的使用
let urlString = "http://www.520it.com"
// 1.普通写法
let url : NSURL? = NSURL(string: urlString)
if url != nil {
let request = NSURLRequest(URL: url!)
}
// 可选绑定
if let url = url {
let request = NSURLRequest(URL: url)
}
// 可选绑定的简介写法
if let url = NSURL(string: urlString) {
let request = NSURLRequest(URL: url)
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。