Swift 可选项(?)。两者有什么区别?

Swift Optionals(?). What's the difference between two?

就可选(?)而言,两者有什么区别? 我正在尝试获取 swift,似乎“?”的位置很重要,我很难理解“?”的影响。在不同的地方。

    var beaconGroup:GroupData = filteredArray.firstObject? as GroupData

    var beaconGroup:GroupData = filteredArray.firstObject as GroupData

Swift 中的可选项是一个变量,可以包含一个值或没有值。可选项是通过附加一个 ?到类型:

var myOptionalString:String? = "Hello"

?有两种正常使用方式:

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

var strValue : String? 

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

let hashValue = strValue?.hashValue  

如果 strValue 为零,则 hashValue 为零。如果 strValue 不是 nil,则 hashValuestrValue.

的值

这两行没有区别:

var beaconGroup:GroupData = filteredArray.firstObject? as GroupData

var beaconGroup:GroupData = filteredArray.firstObject as GroupData

首先,? 是不必要的 — firstObject 已经 returns 是可选的。使用可选的链接运算符而不实际链接进一步的成员查找或访问表达式无效。

在 Swift 1.2 中(目前在 Xcode 6.3 beta 中可用),过度使用可选的链接运算符是一个编译错误:

error: optional chain has no effect, operation already produces 'AnyObject?'