2012-01-20 1 views
1

Я использую следующие три метода делегата, чтобы вытащить изображения из 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; 

Я заметил, что если изображение велико, что иногда didReceieveResponse будет вызвана прежде, чем предыдущий didCompleteWithResponse закончил. Это завинчивает NSData, полученные во втором делегате.

Как исправить это? Все три вызываются в итерации for for для каждой итерации. как так:

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

} 

ответ

0

Я не работал с S3, но я уверен, что будет какой-то способ различения трех различных AmazonServiceRequest *request в функции делегата (возможно, ключ, который вы используете для init). Таким образом, вы можете предпринять все действия, которые вы делаете, с помощью NSData, сначала сделав чек на request, возвращаетесь в функции делегата.

+0

Простите, я не совсем понимаю. Вы хотите написать каждый запрос, чтобы проверить предыдущий, прежде чем начать? Как мне это сделать? – Eric

+0

@ Эрик предположим, что вы хотите сохранить ответ всех трех запросов (или любого другого действия, которое вы хотите с NSData), поддерживать три объекта NSData, скажем NSData * data1, data2, data3. Теперь в вашем методе делегата проверьте, является ли (request firstRequest) {[data1 appendYourData]} else if (request is secondRequest) {..... и т. Д. Точка wholde перед тем, как сделать что-то с ответом NSData, к какому запросу принадлежит – aqs

+0

Я предполагаю, что мой вопрос должен ли я сделать это? Почему каждый делегат не может быть связан с одним экземпляром этого объекта данных? – Eric

Смежные вопросы