2012-01-20 10 views
1

次の3つのデリゲートメソッドを使用して、S3から画像を取得します。彼らは提示された順序で呼び出されます。AWS S3デリゲートメソッドがiPhoneで中断されました

-(void)request:(AmazonServiceRequest *)request didReceiveResponse:(NSURLResponse *)response; 
-(void)request:(AmazonServiceRequest *)request didReceiveData:(NSData *)data; 
-(void)request:(AmazonServiceRequest *)request didCompleteWithResponse:(AmazonServiceResponse *)response; 

私は、もし画像が前didCompleteWithResponseが終了する前に、時にはdidReceieveResponseが呼び出されますこと大であることに気付きました。これは、2番目のデリゲートで受け取ったNSDataをねじ込みます。

これを修正するにはどうすればよいですか?これらの3つはすべて、繰り返しごとにforステートメントの繰り返しで呼び出されます。そのよう:

for (NSString *name in array){ 
     @try { 
    S3GetObjectRequest *gor = [[S3GetObjectRequest alloc]initWithKey:name withBucket:[Constants pictureBucket]]; 
    [gor setDelegate:self]; 
    [s3 getObject:gor]; 

} 

答えて

0

私はS3で働いていないが、私は、デリゲート機能の異なる3 AmazonServiceRequest *requestinitに使用しているかもしれないキー)を区別するいくつかの方法があるだろうと確信しています。だから、NSDataで何をしていても、デリゲートファンクションに戻ってくるrequestを確認してください。

+0

申し訳ありませんが、わかりません。あなたは、開始する前に前のものをチェックするように各要求を書いていると言っていますか?どうすればいい? – Eric

+0

@ Eric 3つのリクエスト(またはNSDataで必要なアクション)のレスポンスを保存し、NSData * data1、data2、data3という3つのNSDataオブジェクトを管理したいとします。今すぐあなたのデリゲートメソッドで、(要求がfirstRequest){[データ1追加データ]} else if(要求がsecondRequest){.....などを確認します。 WHOLEDポイントは応答NSDataチェックで何かをする前です。どのリクエストに属しているのですか – aqs

+0

私の質問は私がそれをしなければならないと思いますか?各デリゲートは、そのデータオブジェクトの単一のインスタンスに関連付けられることはありませんか? – Eric

関連する問題