Swift教程之可选类型【问号的用法】

原创 2015年07月09日 14:11:03
//MARK:-----------可选类型?的用法------------
/*
-------------------------------------------------------------
可选类型(变量名: 类型?)
这个值要么存在,并且等于x,要么根本不存在。
可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,指对象不存在,而Swift 的 nil 不是指针,它代表特定类型的值不存在。任何类型的可选类型都能赋值为 nil,而不仅限于对象类型。并且更安全。
*/
let num = "123"

//由于toInt方法可能会失败,因此它会返回一个可选的Int类型,而不同于Int类型。一个可选的Int类型被记为Int?,不是Int。问号表明它的值是可选的,可能返回的是一个Int,或者返回的值不存在。
let convertedNumber:Int? = Int(num)// convertedNumber is inferred to be of type "Int?", or "optional Int"

var serverResponseCode: Int? = 404  //要么存在,且值为404
serverResponseCode = nil            //要么不存在。要将可选变量设为值不存在的状态,可以给它赋特殊值 nil


/*nil 不能用于非可选量。
如果代码中的常量或变量需要适配值不存在的特殊情况,务必将它声明为恰当的可选类型。
如果定义的可选量时不提供默认值,该常量或变量将自动设为 nil
*/
//var strValue = nil  //错误
var strValue : String?


//判断一个Optional的值是否有值,可以用if来判断
if (strValue != nil)
{
    //do sth with strValue
}

/* 使用Optional值
在使用Optional值的时候需要在具体的操作,比如调用方法、属性、下标索引等前面需要加上一个?
问号的意思是询问是否响应后面这个方法,和原来的isResponseToSelector有些类似
*/
let hashValue = strValue?.hashValue     //strValue是Optional的字符串,如果strValue是nil,则hashValue也为nil,如果strValue不为nil,hashValue就是strValue字符串的哈希值
//let hashValue = strValue.hashValue      //错误。对于Optional值,不能直接进行操作
print("hashValue is \(hashValue)")

/*总结 ? 使用场景
声明Optional值变量
用在对Optional值操作中,用来判断是否能响应后面的操作[判断是否是nil的三元运算符]
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

学校学习ios教程笔记,第二节Swift的常量,变量,可选类型控制流

// //  main.swift //  SwiftTest // //  Created by  on 16/10/20. //  Copyright (c) 2016年 . All rights...

Swift教程:函数类型作为参数

  • 2015年08月26日 17:09
  • 29.96MB
  • 下载

Swift教程之解包操作【感叹号的用法】

//MARK:-----------可选类型!的用法------------ /* 解包(!的用法) 如果确定一个可选类型的对象的值一定存在,那么我们使用 !进行解包获取它的值,或者使用Optiona...

Swift教程:函数篇 函数类型

  • 2015年08月26日 17:03
  • 13.2MB
  • 下载

Swift教程之元组类型

//MARK:--------------元组------------ /* -------------------------------------------------------------...

Swift教程-基本类型

常量和变量概括Swift只包含变量(var),常量(let)两种值。对于两者而言,相同点都是对象的引用,不同点在于常量的值不可以在声明后不可改变,变量则可以//变量 var welcome = "He...

Swift教程:函数类型作为返回类型

  • 2015年08月26日 17:17
  • 45.32MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift教程之可选类型【问号的用法】
举报原因:
原因补充:

(最多只允许输入30个字)