Swift錯誤處理模式,在Swift1.x和Swift 2.0是不同的兩種模式。
Swift 1.x代碼錯誤處理模式采用Cocoa框架錯誤處理模式,到現在Objective-C還沿用這種處理模式,而Swift2.0之後采用了do-try-catch錯誤處理模式。
下面的示例代碼是從文件中讀取字符串到內存中,如果使用Swift 1.x錯誤處理模式代碼如下:
import Foundation
var err: NSError? //定義可選的NSError?變量 let contents =NSString(contentsOfFile: filePath, encoding: NSUTF8StringEncoding, error: &err) if err != nil { //判斷err變量是否還是nil // 錯誤處理 }
NSError?一定是可選的變量,因為要給它初始化為nil。
判斷err變量是否還是nil,如果還是nil在代碼
let contents =NSString(contentsOfFile: filePath, encoding:NSUTF8StringEncoding, error: &err)
方法調用過程中沒有發生錯誤,否則說明有錯誤發生。
上述代碼的構造函數,它的Swift語法定義如下:
init?(contentsOfURL url:NSURL, encoding enc: UInt, error error: NSErrorPointer)
構造函數的最後一個參數是NSErrorPointer(即NSError指針),那麼在實際調用時候我們需要傳遞err變量地址(即&err),&是取地址符。當方法調用完成後,如果有錯誤則err變量會被賦值。