如何在Swift中使用NSError

來源:互聯網
上載者:User

標籤:swift   nserror   ios   nsjsonserialization   


步驟一:聲明NSError變數。一定要加"?",不加或者加"!"都不行。因為使用了optional,所以要用var而不用let。

var error: NSError?

步驟二:使用的時候在變數前加上"&"。

NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &error)

之前遇到的坑是NSError使用的是"!",編譯器老是說"Could not find member "MutableContainers",把我錯誤的引誘到其它地方。


在Objective-C中,方法接受NSError的類型是(NSError **),編譯器接著把它轉換成(NSError *__autoreleasing *)。

而在Swift中,方法接受NSError的類型是(NSErrorPointer),NSErrorPointer是AutoreleasingUnsafeMutablePointer<NSError?>的別名。(alias)

typealias NSErrorPointer = AutoreleasingUnsafeMutablePointer<NSError?>

而AutoreleasingUnsafeMutablePointer<NSError?>其實是一個結構體。

下面是使用的一個簡單的例子。

let jsonString = "[{\"name\":\"benson\",\"age\":25}]"let data = jsonString.dataUsingEncoding(NSUTF8StringEncoding)var error: NSError?let jsonObject: AnyObject? = NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &error)if let error = error {        println(error.localizedDescription)}println(jsonObject)

WWDC2015引進了Swift2.0,並宣稱年底開源。其中新增的一個特性是Error Handling Model,我們可以使用do try catch來處理可能會拋錯的方法。OC裡許多包含有NSError參數的方法轉換到Swift2.0後都沒有了,反而方法會聲明拋出錯誤(throws)。


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

如何在Swift中使用NSError

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.