2015年9月22日火曜日

【swift】iOS9におけるjsonの取得 sendAsynchronousRequestが使えない。

Xcode7のSwift2からそれまで使っていた幾つかのファンクションがdeprecatedになっていました。。。
その中でも一番大きかったのがjsonの取得に使っていたsendAsynchronousRequestがdeprecatedになっていた事でした。

今まではこんな感じ。
//★★★★★★★★★★★★★★★★★★
// APIへの問い合わせ
func getJson() {
let URL = NSURL(string: "APIのURL")
let req = NSURLRequest(URL: URL!)
NSURLConnection.sendAsynchronousRequest(req,
queue: NSOperationQueue.mainQueue(),
completionHandler: responseJson)
}
//★★★★★★★★★★★★★★★★★★
// 取得したAPIデータの処理
func responseJson(res: NSURLResponse?, data: NSData?, error: NSError?){
if (error == nil) && (data != nil){
let json: AnyObject! = (try? NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments)) as? NSArray
} else {
//エラー処理
}
}
view raw getjson.swift hosted with ❤ by GitHub

18行目のjsonにデータが格納されるので、取り出して使っていました。

swift2ではNSURLSessionのdataTaskWithRequestを使えと怒られます。。。


swift2から下記の通りで同様に問合せ出来ました。
NSURLSessionのdataTaskWithRequestでリクエストを作り、do try catchで処理するのがポイント。
func getJson() {
let URL = NSURL(string: "APIのURL")
let req = NSURLRequest(URL: URL!)
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
let session = NSURLSession(configuration: configuration, delegate:nil, delegateQueue:NSOperationQueue.mainQueue())
let task = session.dataTaskWithRequest(req, completionHandler: {
(data, response, error) -> Void in
do {
let json = try NSJSONSerialization.JSONObjectWithData(data!, options:NSJSONReadingOptions.AllowFragments ) as! NSArray
} catch {
//エラー処理
}
})
task.resume()
}
view raw swft2json.swift hosted with ❤ by GitHub

Related Posts:

  • 【swift】アプリをアップロードするとiTunes Connect: Your app "MYAPPNAME" (Apple ID: ***) has one or more issues というメールが届くXcode7・Swift2になって初のアプリのバージョンアップ。 使っていた色々なメソッドがdeprecatedになり、、色々と修正してようやくアップロードまでこぎつけましたが、最後の最後でまたつまづきました。。。 アーカイブを作り、バリデートをし、意気揚々と「Upload To App Stor… Read More
  • 【ECCUBE3 プラグイン】最近購入された商品 【ECCUBE3 プラグイン】最近購入された商品 ECCUBE3の商品詳細画面に最近購入された商品を追加します。 ソースはGithubにupしています。 こちらから How to install Githubページの右下の「Download ZIP」からZIPファイルをダウンロード E… Read More
  • 【ECCUBE3 プラグイン】新着商品 【ECCUBE3 プラグイン】新着商品 ECCUBE3のトップページに新商品を追加します。 ソースはGithubにupしています。 こちらから How to install Githubページの右下の「Download ZIP」からZIPファイルをダウンロード ECCUBE3管理画面オ… Read More
  • 【ECCUBE3】複数の規格がある商品をcsvで登録する。ECCUBE2系の頃から規格が複数ある商品をcsvで登録するにはカスタマイズが必要でした。 EC CUBE3系も同様なので、商品登録csvの「規格分類1(ID)」セルにカンマ区切りで規格分類IDを入力すると登録できる仕様にしてみましょう。 ※「規格分類2(ID)」には手を加えないので、「規格分類1(… Read More
  • 【ECCUBE3 プラグイン】配送伝票番号【ECCUBE3 プラグイン】配送伝票番号 ECCUBE3で注文毎に配送伝票番号を登録し、発送メールに追記します。 ソースはこちら インストール方法 ソースはこちらからGithubへ行き、ページの右下の「Download ZIP」からZIPファイルをダウンロード ECCUBE3管理画面オー… Read More

0 コメント:

コメントを投稿