2017-06-04 7 views
-4

あなたが持っているものを返すには?すみません、初心者、私は理解しています。 enter image description hereSwiftyJSON Alamofireあなたが持っているものを返すには?

enter image description here

+1

スクリーンショットを追加するのではなく、常にコードをあなたの質問にコピーする必要があります。コードを書き直す必要があるときには、コードをテストするのが難しくなります。 –

+0

"Async(またはasynchrone)+ Swift + Closure" – Larme

答えて

0

Alamofire.request非同期タスクなので、この後に書かれた任意のコードは、最も可能性の高いタスクが完了する前に実行されようとしています。あなたが望むことをやるにはいくつかの方法がありますが、多くの情報を提供していないので、閉鎖の中にJSONを移動しました。だからあなたは何かを印刷するべきです。

Alamofire.request("https://...").responseJSON { (response) in 

    // Inside this closure is where you receive your JSON 

    if let value = response.value { 

     let json = JSON(value) 

     let title = json["posts", 3, "title"].stringValue 

     print("Title:", title) 
    } 
} 

// Any code after this request will most likely be executed before 
// the request has completed because it is done asynchronously. 

これはあなたのために良い仕事かもしれないもう一つの方法です。

私はあなたが初心者であることを理解しており、この種の操作はかなり複雑になる可能性があります。コードの実行順序と変数の仕組みを理解する必要があります。 swiftyJsonVarviewDidLoadのコードにアクセスできないブロックで宣言されているため、このエラーが発生しています。 multi-threadingとその他のasynchronousのタスクについて学び、おそらく変数を正しく宣言して使用する方法を学ぶことをお勧めします。

override func viewDidLoad() { 
    super.viewDidLoad() 

    load { (json) in 

     if let json = json { 

      let title = json["posts", 3, "title"].stringValue 

      print("Title:", title) 
     } 
    } 
} 

func load(completion: @escaping (JSON?) -> Void){ 

    Alamofire.request("https://httpbin.org/get").responseJSON { (response) in //https://... 

     var json: JSON? 

     if let value = response.value { 

      json = JSON(value) 
     } 

     completion(json) 
    } 
} 
+0

あなたに問題を適切に検索するために、概念や語彙/キーワードが欠落しています。私の質問のもとでは、私は、jsonがAlamofire.requestから受け取ったという事実をどう扱うかを意味しました。 viewDidLoad FUNC – Ivan

+0

'オーバーライド(){ super.viewDidLoad() 負荷() VAR oneTitle = swiftyJsonVar [ "ポスト"、3 "タイトル"]:例えば、それはエラーを(変数を参照しない)書き込みます。 stringValue プリント( "タイトル:" + oneTitle) } FUNC負荷(){ Alamofire.request( "https://にGG").responseJSON {(responseData) - で>ボイドIF((responseData .result.value)!= nil){ swiftyJsonVar = JSON(responseData.result.value!) } } } ' – Ivan

+0

2枚の画像を追加して、私が望むものを表示しました。 – Ivan

関連する問題