2011-07-23 19 views
0

私はサーバーにリクエストするビューコントローラを持っています。すべてのサーバー要求ハンドラを1つのクラスに入れました。したがって、ビューコントローラでは、[Apihandler getlist]を使用してリストを取得してください。クラスApihandlerでASIBasicBlock内の戻り値を取得

、私は、サーバーの応答(JSONオブジェクト)を取得するために

[_request setCompletionBlock:^{}] 

でブロックを使用。

JSONオブジェクトに「error」という名前のキー/値が含まれている場合は、ASIHttpRequest自体が完了していますが、失敗とみなします。それ以外の場合は成功です。

質問:上記の完了ブロックの戻り値を取得するにはどうすればよいですか?私はASIドキュメントをチェックし、ASIBasicBlockはvoid戻り型です。

答えて

2

私はデリゲートでこれを行いました。だから、私は次のようなコードを持っています:

基本的に、この完了ブロックが実行されると、processDataメッセージをバックグラウンドで呼び出します。 processDataメッセージでは、デリゲートを使用してメインのUIスレッドにデータを返します。そのメッセージは次のようになります。

- (void)processData:(NSData *)data { 

    NSError *error = nil; 
    NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 


    dispatch_async(dispatch_get_main_queue(), ^(void){ 
     [self.delegate requestDataReady:json]; 
    }); 
} 

私は役に立つと思います。

UPDATE:

もちろん、あなたがバックグラウンドスレッドでの処理方法を実行する必要はありません。ブロック内の[self processData:data]を簡単に呼び出すこともできますし、processDataのコードをブロック内に配置することもできます。

+0

ありがとうございました!私は応答がデータを持っていることを忘れています。そのデータを解析することによって、エラーが発生したかどうかを知ることができます。 – LetBulletFlies

関連する問題