Swift Optional Type(问号?和感叹号!)的理解和使用

两个礼拜搞定iOS,那是吹牛吹出来的。呵呵,不过经过几天的学习还是觉得iOS还是很熟悉的,觉得有javascript的一些特征,有一些java的特征,貌似swift集大家所成的一门语言,本人还是比较喜欢写android的,但是对比iOS来讲,swift貌似简单多了,动画,控件,屏幕适配这些都比较类似哈。今天在学习iOS的时候碰到一个感叹号(!)问号(?)的问题。比较纠结,不知道这代表的是什么意思。所以去查看一下文档,明白其中的含义。

先看两张图片

代码提示String需要?或者感叹号

函数返回值打上了问号

有图可证,不是骗人的哦。

其实问号和感叹号就是一个optional Type ,顾名思义就是可选的变量类型。

在java中我们声明变量一般会初始化,否则有可能出现空指针的错误。

而在swift中声明变量的时候,这个变量有值也有可能没有值,所以swift就这样写

var optionalName:String?

定义的这个optionalName是可控类型,允许它有值和没有值。

var vc = segue.destinationViewController as! GalleryViewController

这里使用了感叹号,表示这个controller类型是确定的,很明显,强转的时候必须要确定类型。

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

时间: 2024-08-12 01:43:58

Swift Optional Type(问号?和感叹号!)的理解和使用的相关文章

随手记Swift基础和Optional Type(问号?和感叹号!)

距离Apple推出Swift已经有几天了,网上也时不时出现"急招Swift程序员,要求有一天工作经验"的帖子. 看到Swift,除了苹果放的另外一门语言的链接(http://swift-lang.org/),还可能联想到Taylor Swift,或者铃木雨燕. 这几天网上关于Swift的话题和材料应该迅速膨胀,比如StackOverflow的相关标签,还有知乎上的一些相关讨论. 关于Swift的推出,我个人觉得对现有的使用Objective-C的iOS开发者不算是很大的冲击,毕竟写代码

swift学习三:?和!理解

Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值,也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化.如果在使用变量之前不进行初始化就会报错: 1 2 3 4 5 var stringValue : String   //error: variable 'stringValue' used before being initialized //let hashValue = stringValue.hashValue //            

Initializer for conditional binding must have Optional type, not 'String'

今天看到问Swift问题:  Initializer for conditional binding must have Optional type, not 'String' 以前没遇到过这个问题,这不赶紧写个demo验证一下,弄懂什么问题吧,算是积累小知识了. 报错原因: if 里面的判断类型必须是Optional类型. 解决方法: 注意不仅是if let会报错,guard let 同样是这样... Initializer for conditional binding must have

initializer for conditional binding must have optional type not AVAudioPlayer

if let buttonBeep = self.setupAudioPlayerWithFile("ButtonTap", type: "wav") {                        self.buttonBeep = buttonBeep        }        if let secondBeep = self.setupAudioPlayerWithFile("SecondBeep", type: "wav

Swift 总结使用问号(?)和感叹号(!)-备用

在使用可选类型和可选链时,多次使用了问号(?)和感叹号(!),但是它们的含义是不同的,下面我来详细说明一下. 1. 可选类型中的问号(?) 声明这个类型是可选类型,访问这种类型的变量或常量时要使用感叹号(!),下列代码是显示拆包:   let result1: Double? = divide(100, 200) print(result1!) 2. 可选类型中的感叹号(!) 声明这个类型也是可选类型,但是访问这种类型的变量或常量时可以不使用感叹号(!),下列代码是隐式拆包:   let res

Swift optional详解

学习了一阵swift对于optional类型一直不是很了解,为此特意学习了一下,通过观看斯坦福大学的视频,将他所讲的进行了总结 optional 有两个值 1.not set (未设) 代表这个值没有被任何人设置过, 或者  有人把他设置成了  未设 状态 我们说这个是nil , 就是未设 的意思, 就是optional 变量在  未设  状态下的值  not set 2.something  (被赋了一个值) let digit : String? 被设置赋了一个值  , 这个值的类型就是  

SWIFT Optional Value

SWIFT中有一个类型定义叫可选值,在变量类型后面加一个?号即可定义一个类型为Optional Value的变量,当在使用变量时要用到强制解包!. 如在页面上有一个可选输入年龄的框,在接受数据的时间就可能要定义一个可选值的变量. var age:Int? = 10 var str:String = "Age is "+String(age!) 以下为从一个数组中取数据,然后判断是否存在值 var numberOfLegs = ["ant":6, "snak

swift optional chaining

class ca{ var num:Int =1; } class cb{ var a:ca?; } class cc{ var b:cb?; } var x:cc =cc(); var y:Int? =x.b?.a?.num;//或var y = x.b?.a?.num; println("y =\(y),\r\ny type =\(y.dynamicType)");

swift runtime type

var v = 1.0; println(v.dynamicType);//Swift.Double