尝试学习swift 2.0。得到这个代码,但它失败,错误可以抛出和错误,没有标记尝试,并没有处理错误。在线device.lock ...
func focusTo(value : Float) {
if let device = captureDevice {
if(device.lockForConfiguration()) {
device.setFocusModeLockedWithLensPosition(value, completionHandler: { (time) -> Void in
//
})
device.unlockForConfiguration()
}
}
}
我相信这很简单,但有人可能会详细说明语法的外观。我认为我应该理所当然地使用快速的“守卫”指令而不是尝试。
答案 0 :(得分:1)
修改:guard
只能确保device.lockForConfiguration()
不返回false。如果它抛出错误,则它必须由do - try - catch
包裹:
在这种情况下,lockForConfiguration()
不会返回Bool
,因此与guard
无关。
do {
try device.lockForConfiguration()
device.setFocusModeLockedWithLensPosition(...)
device.unlockForConfiguration()
} catch let error as NSError {
if error.code == 0 {
print("Error code: 0")
}
}
语法为:
guard device.lockForConfiguration() else {
print("Lock configuration failed!!1")
return
}
device.setFocusModeLockedWithLensPosition()
device.unlockForConfiguration()
您甚至可以使用它来替换{{1}}:
if