2012-04-07 12 views
0

Ich versuche, mehrere Dateien mit den AFNetworking-Klassen herunterladen. Ich bin ein kompletter Neuling dazu, und ich versuche herauszufinden, die Arbeit von AFHTTPClient, ich habe ein Objekt der AFHTTPClient-Klasse mit Operationen initialisiert, aber ich kann einfach nicht herausfinden, wie man die Operationen in der Warteschlange. Ich habe versucht, auch die Dokumentation anzuschauen, konnte aber nichts finden. HierAFHTTPClient mehrere Datei herunterladen

ist der Code Ich verwende:

-(void)downloadFiles:(NSArray *)files { 
    if ([files count] > 0) { 
     NSMutableArray *operationArray = [[NSMutableArray alloc] init]; 
     for (int i = 0; i < [files count]; i++) { 
      ResourceFile *resourceFile = (ResourceFile*)[files objectAtIndex:i]; 

       NSString *urlString = [NSString stringWithFormat:@"%@views/ph_session?args=0", BASE_URL]; 
       NSURL *fileDownloadUrl = [[NSURL alloc] initWithString:urlString]; 
       NSMutableURLRequest *fileDownloadRequest = [[NSMutableURLRequest alloc] initWithURL:fileDownloadUrl]; 
       [fileDownloadRequest setValue:[SessionManager getSessionCookieForLogin] forHTTPHeaderField:@"Cookie"]; 
       void (^successBlock)(NSURLRequest *, NSHTTPURLResponse *, id) = ^(NSURLRequest *request, 
                        NSHTTPURLResponse *response, 
                        id JSON) { 
        NSLog(@"Success callback for file %@", resourceFile.filename); 
       }; 
       void (^failureBlock)(NSURLRequest*, NSHTTPURLResponse*, NSError*, id) = ^(NSURLRequest *request, 
                          NSHTTPURLResponse *response, 
                          NSError *err_, 
                          id JSON) { 
        NSLog(@"Failure callback for file %@", resourceFile.filename); 
       }; 
       AFJSONRequestOperation *operation = [AFJSONRequestOperation 
                JSONRequestOperationWithRequest:fileDownloadRequest 
                success:successBlock 
                failure:failureBlock]; 
       [operationArray addObject:operation]; 
     } 
     if ([operationArray count] > 0) { 
      AFHTTPClient *requestHandler = [[AFHTTPClient alloc] init]; 
      void (^progressBlock)(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) = ^(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) { 
       NSLog(@"%d proccesses completed out of %d", numberOfCompletedOperations, totalNumberOfOperations); 
      }; 
      void (^completionBlock)(NSArray *operations) = ^(NSArray *operations) { 
       NSLog(@"All operations completed"); 
      }; 

      [requestHandler enqueueBatchOfHTTPRequestOperations:operationArray 
                progressBlock:progressBlock 
               completionBlock:completionBlock]; 
     } 
    } else { 
     NSLog(@"No file to download"); 
    } 
} 

Hier ist die Resource Klasse, deren Anordnung an diese Methode übergeben werden:

#import <Foundation/Foundation.h> 

@interface ResourceFile : NSObject { 
    NSInteger fid; 
    NSString *filemime; 
    NSString *filename; 
    NSString *filesize; 
    NSString *uri; 
    NSString *timestamp; 
} 

@property NSInteger fid; 
@property (retain, nonatomic) NSString *filemime; 
@property (retain, nonatomic) NSString *filename; 
@property (retain, nonatomic) NSString *filesize; 
@property (retain, nonatomic) NSString *uri; 
@property (retain, nonatomic) NSString *timestamp; 

-(id)initWithData:(id)data; 

@end 

Kann jemand bitte sagen Sie mir, was ich bin falsch machen?

Antwort

0

fand ich das Problem, ich habe versucht AFJSONRequestOperation mit AFHTTPClient enqueueBatchOfHTTPRequestOperations einzureihen, wo ich angeblich AFHTTPOperations einzureihen ....