Swift Optionals(?)。两者之间的区别是什么?

时间:2015-03-11 17:10:29

标签: swift syntax null optional-parameters optional

就可选项(?)而言,两者之间的区别是什么? 我试图迅速接受,似乎是#34;?"的位置。事情和我很难掌握"?"在不同的地方。

    var beaconGroup:GroupData = filteredArray.firstObject? as GroupData

    var beaconGroup:GroupData = filteredArray.firstObject as GroupData

2 个答案:

答案 0 :(得分:3)

这两行之间没有区别:

var beaconGroup:GroupData = filteredArray.firstObject? as GroupData

var beaconGroup:GroupData = filteredArray.firstObject as GroupData

首先,?是不必要的 - firstObject已经返回一个Optional。使用可选的链接运算符而不实际链接其他成员查找或访问表达式无效。

在Swift 1.2(目前在Xcode 6.3 beta中可用)中,多余使用可选链接运算符是编译错误:

  

错误:可选链无效,操作已生成' AnyObject?'

答案 1 :(得分:1)

Swift中的一个可选项是一个可以保存值或不保存值的变量。期权是通过追加?到类型:

var myOptionalString:String? = "Hello"

?以两种常规方式使用:

1.Declare一个可选的var(只需在类型后添加?

var strValue : String? 

2.判断var将在被调用时响应方法或属性

let hashValue = strValue?.hashValue  

如果strValue为零,则hashValue为零。如果strValue不为零,则hashValue的值为strValue