当我通过一些针对AVFoundation的课堂讨论的筛选,我偶然发现了以下内容:在Swift中返回一个Unwrapped Optional?
class func defaultDeviceWithMediaType(mediaType: String!) -> AVCaptureDevice!
因为自选项目是一个新的概念对我来说,我有点糊涂了。
讨论中说,此方法可以返回“给定媒体类型的默认设备,或者如果没有设备具有该媒体类型,则返回零。”但是,如果有可能返回零,为什么在返回语句中打开这个可选项?它不应该是AVCaptureDevice?
然后,望着利用上述方法的例子的时候,我发现以下:
public lazy var device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
public func hasFlash() -> Bool {
if let d = self.device {
return d.hasFlash
}
return false
}
据我了解,你会当你有一个使用if let
声明可选,但因为类defaultDeviceWithMediaType
返回一个未包装的变量,为什么需要if let
?
非常感谢你提前。