2016-11-15 8 views
0

Http POSTリクエストとNSURLRequestを使用してJSONデータを解析しています。しかし、私がsendAsynchronousRequestの下で値を得たとき、私はそのリクエストの外にそれらの値を使用することはできません。以下の例をご覧ください:sendAsynchronousRequestの値の使い方は?

[NSURLConnection sendAsynchronousRequest:rq queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
    { 
     NSError *parseError = nil; 
     dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError]; 
     NSLog(@"Server Response (we want to see a 200 return code) %@",response); 
     NSLog(@"dictionary %@",dictionary); 
    }]; 

私のクエリは、私が必要とするところで辞書の値をどのように使用できますか?ありがとう

+0

**内部で使用することができます** – vadian

+0

@vadian、これらの値をテーブルビューに配置します。では、どうすればそれを内部で使うことができますか? – User9975

+1

コードを入力して、完了ブロック内のテーブルビューを再ロードします。非同期的に考えてください – vadian

答えて

2

あなたは多くの方法でそれを行うことができます。 1つの方法は、プロパティを宣言してブロック内で使用することです。

非同期呼び出しを行うときには、それらの呼び出しに応答する独自のカスタムブロックを用意することをお勧めします。

は、最初の完了ブロックを宣言します。

typedef void (^ ResponseBlock)(BOOL success, id response); 

とのparamとして、このブロックを使用する方法宣言:

- (void)processMyAsynRequestWithCompletion:(ResponseBlock)completion; 

をし、この方法では、あなたの非同期呼び出しが含まれた:

- (void)processMyAsynRequestWithCompletion:(ResponseBlock)completion{ 

[NSURLConnection sendAsynchronousRequest:rq queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
{ 
    NSError *parseError = nil; 
    dictionary = [NSJSONSerialization JSONObjectWithData:data options:0 error:&parseError]; 
    NSLog(@"Server Response (we want to see a 200 return code) %@",response); 
    NSLog(@"dictionary %@",dictionary); 
    completion(YES,response); //Once the async call is finished, send the response through the completion block 
}]; 

} 

このメソッドは、任意の場所で呼び出すことができます。

[classInWhichMethodDeclared processMyAsynRequestWithCompletion:^(BOOL success, id response) { 
     //you will receive the async call response here once it is finished. 
     NSDictionary *dic = (NSDictionary *)response; 
     //you can also use the property declared here 
      _dic = (NSDictionary *)response; //Here dic must be declared strong 
}]; 
+0

成功していません。動いていない。 – User9975

+0

何が動作していないか説明してください。 –

+0

classInWhichMethodで、辞書値を取得できませんでした。 – User9975

関連する問題