初めまして。
現在Swiftの勉強も兼ねてネット上のJSONデータを取得して処理を行う簡単なプログラムを作成しています。
その中で通信系で有名とのことでAlamofireを導入し、特定のJSONデータをパースして返却するという基礎的な部分を作成しているのですが、タイトルの通り非同期通信が常に行われてしまうせいか値が入らない状態となり困っています。
具体的には、
lang
1let testData = getData(); 2print(testData); // (1) 3 4func getData() -> NSData { 5 var result_data = NSData(); 6 7 Alamofire.request(.GET, <JSONのURL>).responseJSON { 8 response in 9 10 if let dt = response.data { 11 result_data = dt; 12 } 13 print(result_data) // (2) 14 15 } 16 17 return result_data; 18}
のような書き方をし、JSONデータの入ったresult_dataを呼び出し元のtestDataへ入れたいと考えていますが、
この動作を行うとtestDataには何も入っておらず(1)、数秒待ってからJSONの中身が出力される状況です。(2)
テーブルの更新やボタンを押した際の処理などといったケースでは問題ないのですが、今回作成したい処理は
「メソッドを呼び出した段階で取得完了まで行い、そこから整形を行った上で返却したい」
為、非同期ではなく同期式で書きたいと考えています。
ですが、検索を行ってもヒットする文献のほとんどが非同期方法しか書いておらず困っています。
何か書き方等ご存知でしたら教えて頂けませんでしょうか。
もしくはNSURLSession等をそのまま使用したほうが良いのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。