手把手带你学习Swift3.0(15):可选类型使用

1.可选类型的基本使用

//: Playground - noun: a place where people can play

import UIKit


/*
 1.定义可选类型
    1> Optional<String> 
    2> String?
 2.给可选类型进行赋值
    1> Optional("why")
    2> "why"
 3.从可选类型中取值
    name! --> 强制解包
 4.注意: 强制解包非常危险,所有先判断,再解包
 5.语法: 可选绑定
    if let name = name {
        print(name)
    }
 */

/*
class Person {
    var name : String = nil
}
 */

//var str : String = "why"

// nil是一个特殊的类型, 跟String/Int
// let m : Int = "why" 错误写法
// var name : String = nil

// 在开发中,只有可选类型才能赋值为nil, 其它类型都不能赋值为nil
// 1.定义可变类型: 泛型集合
// var m : Int = 20 定义Int类型 Array<String> -> [String]
// 1> 定义方式一:
// var name : Optional<String> = nil
// 2> 定义方式二: 语法糖
var name : String? = nil


// 2.给可选类型赋值
//// 2.1.赋值方式一:
//name = Optional("why")
//
//// 2.2.赋值方式二:
name = "why"


// 3.取出可选类型中的值
// print(name)
// 从可选类型中取值: 可选类型 + ! --> 强制解包
// print(name!)

// 4.注意: 强制解包非常危险, 如果可选类型为nil,那么强制解包就会崩溃
if name != nil {
    print(name!)
}


// 5.可选绑定(固定格式) : 该语法用于可选类型, 使我们使用起来可选类型更加方便
// 1> 判断name是否有值, 如果没有值,则直接不执行{}
// 2> 如果name有值,那么系统会自动对可选类型进行解包, 并且将解包后的结果赋值给前面的tempName
if let tempName = name {
    print(tempName)
}

if let name = name {
    print(name)
}

2.可选类型的应用

//: Playground - noun: a place where people can play

import UIKit

// 只要一个类型有可能为nil, 那么这个标识符的类型一定是一个可选类型

// 1.将字符串转成Int类型
let m : Double = 2.44
let n = Int(m)

let str : String = "123"
let num : Int? = Int(str) // 123/nil


// 2.根据文件名称:123.plist, 获取该文件的路径
let path : String? = Bundle.main.path(forResource: "123.plist", ofType: nil) // string/nil


// 3.将字符串转成NSURL
// 如果字符串中有中文,那么就是转化不成功, 返回结果 nil
// let url : NSURL? = NSURL(string: "http://www.520it.com") // URL/nil
let url = URL(string: "http://www.520it.com")

// 4.从字典中取出元素
let dict : [String : Any] = ["name" : "why", "age" : 18]
let value = dict["neme"] // Any/nil

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 4,025评论 1 10
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,321评论 6 13
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,010评论 6 342
  • S城的空气照旧的干燥清冽。 G大内。 “唰————嘭!” “完美投中!阿晗,走了回家回家!”少年笑眯眯的看着坐在地...
    绿色的金子阅读 234评论 0 0