Swift 2を使うとNSJSONSerialization.JSONObjectWithData()でコンパイルエラー ‘Extra argument ‘error’ in call’ が発生する

投稿者: Anonymous

Swift 1.2 では

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

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

error: nil

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

解決

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

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

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

do {
    var abc = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as! NSDictionary

    // エラーが起こらなければ後続の処理...
} catch  {
    // エラーが起こったらここに来るのでエラー処理などをする
}
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *