建置 APP 的環境時,有許許多多的"地雷"可能會導致我們的 APP 爆掉 (crush)。
比方說,假設我們今天做了一個簡易的計算機。就會需要使用者端從 TextField 輸入的資料數值 (Float) 及運算符號,來進行運算。
但是,假如今天家裡的寵物阿狗趁主人不在的時候,拿到了我們的計算機 APP ,用狗爪隨便點了不同於數值型別的字串 "xcode" ,此時由於輸入的資料為 String 不是原本預設的型別 Float ,按下執行之後,將會使我們的 APP 不幸爆掉。
幸運的是: Swift 語法裡面提供了許多方法,可以幫助我們預先找出上述的錯誤,並及時處理這些 error 。今天與大家簡單分享其中的 if let 與 guard let 。
if let 的錯誤處理:
if let userInput = userInput.value as NSFloat {
print(userInput)
//statements for 'userInput'
} else {
// the value of someOptional is not set (or nil).
return nil
}
在這段程式碼中,使用了 if let ...{} else {} 的檢驗方式。 if let 右方的程式碼 userInput.value as NSFloat 抽取出 userInput 的值,並用 as 指令,強迫其型別為 NSFloat 。如此我們就可以事先驗證 userInput 是否為一個 Flaot。
假如是: 則執行 if let ...{} 括弧內的程式碼。
假若不是: 跳到 else {} ,執行括弧內的程式碼:回傳 nil,避免 crush。
再來看看另外一個例子
guard let 的用法:
func validateInput(input:Float) ->Bool{
guard inputinput.value > 3 else {
print(“Input value evaluated to be negative”)
return false
}
不同之處在於: guard 只有在判別式條件結果為 false 才會執行裡頭的程式碼。並且 guard 使用關鍵字 return, break, throw 跳脫目前程式碼,或者 continue 執行下一步動作。