iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0

建置 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 執行下一步動作。


上一篇
DAY 9: 如何把裝置的 Image 傳送進 APP
下一篇
DAY 11: Auto Layout 定位方式
系列文
Swift 學習目標 -- 30 天送審第一支APP33

尚未有邦友留言

立即登入留言