14490


Swift 1.2 では

[code]

    var abc = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSDictionary
    
[/code]

の構文が通っていましたが、Swift 2 では

[code]

    error: nil
    
[/code]

の部分でエラーとなってしまします。  
おそらく書き方が変わったのだと推測されますが、どのように書けば良いか または、それについて書いてある Reference の URL を教えてください。


CC BY-SA 3.0
2015-08-16T14:27:20.523
14489
2015-08-16T14:38:52.917
2015-08-16T14:38:52.917
5519
10947
question
ios swift iphone
Swift 2を使うとNSJSONSerialization.JSONObjectWithData()でコンパイルエラー 'Extra argument 'error' in call' が発生する


Swift 2ではエラー処理の方法が変わり、新たに`ErrorType`、`do〜try〜catch`や`throw`という構文が導入されました。  
それに合わせてObjective-Cにおいて`NSError`のダブルポインタを渡していたところは`try`構文を使って書くように変更されました。

**参考URL**  
<https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html>

これに従うと、ご提示のコードはSwift 2では、例えば下記のように変更する必要があります。

[code]

    do {
        var abc = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as! NSDictionary
    
        // エラーが起こらなければ後続の処理...
    } catch  {
        // エラーが起こったらここに来るのでエラー処理などをする
    }
    
[/code]


CC BY-SA 3.0
2015-08-16T14:37:35.210
14490
2015-08-16T14:37:35.210
5519
14489
answer