2013-06-12 2 views
0

Я пытаюсь загрузить несколько изображений из приложения.Facebook Загрузка нескольких изображений

У меня был бы массив изображений, и я использую этот код для загрузки всех изображений. Но при загрузке моего пользовательского интерфейса блокируется, если изображения больше. Поэтому, пожалуйста, предложить мне Как начать загрузку в фоновом режиме или предложить мне альтернативный способ ..

HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
HUD.labelText = @"Uploading Images"; 
[self.view addSubview:HUD]; 
[HUD show:YES]; 

NSMutableArray *aryFetchedImages = [self fetchPhotosForAlbum]; 

for (int i = 0; i < aryFetchedImages.count ; i++) { 
    NSLog(@"img%d",i); 
    [params setObject:@" " forKey:@"message"]; 
    [params setObject:UIImageJPEGRepresentation([aryFetchedImages objectAtIndex:i], 50.0f) forKey:@"picture"]; 
    [FBRequestConnection startWithGraphPath:@"me/photos" 
           parameters:params 
           HTTPMethod:@"POST" 
          completionHandler:^(FBRequestConnection *connection, 
               id result, 
               NSError *error) 
    { 
     if (error) 
     { 
      //showing an alert for failure 
      #ifdef DEBUG 
       NSLog(@"Unable to share the photo please try later - Fail %@",error); 
      #endif 
     } 
     else 
     { 
      //showing an alert for success 
      #ifdef DEBUG 
       NSLog(@"Photo %@ uploaded on Facebook Successfully",UIImageJPEGRepresentation([aryFetchedImages objectAtIndex:i], 50.0f)); 
      #endif 
     } 
    }]; 
} 
[HUD show:NO]; 
[HUD removeFromSuperview]; 

ответ

0

Я делаю некоторые изменения в коде, пожалуйста, попробуйте это, и дай мне знать

HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
    HUD.labelText = @"Uploading Images"; 
    [self.view addSubview:HUD]; 
    [HUD show:YES]; 

    NSMutableArray *aryFetchedImages = [self fetchPhotosForAlbum]; 

    for (int i = 0; i < aryFetchedImages.count ; i++) { 

    [self postImgWithMessage:[aryFetchedImages objectAtIndex:i]; 
    } 


    [HUD show:NO]; 
    [HUD removeFromSuperview]; 


    //my code to be added 

    -(void)postImgWithMessage:(UIImage *)image 
    { 
     NSArray *paths1 = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES); 
     NSString *filePath =[[paths1 objectAtIndex:0] stringByAppendingPathComponent:@"image.png"]; 
     NSData *imageData = [NSData dataWithData:UIImagePNGRepresentation(image)]; 
     [imageData writeToFile:filePath atomically:YES];  
     if (filePath == nil) return; 
     NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com/me/photos"]; 
     ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
     [request addFile:filePath forKey:@"file"]; 
     [request setPostValue:[userDefaults stringForKey:KToken] forKey:@"access_token"]; 
     [request setDidFinishSelector:@selector(sendToPhotosFinished:)]; 
     [request setDelegate:self]; 
     [request startAsynchronous]; 

    } 

    - (void)sendToPhotosFinished:(ASIHTTPRequest *)request 
    { 
     //NSLog(@"photo sent"); 

    } 
0

очереди Сопроводительной позволяют выполнять произвольные блоки кода либо асинхронно, либо синхронно по отношению к вызывающему. Вы можете использовать очереди отправки для выполнения почти всех задач, которые вы использовали для отдельных потоков. Преимущество очередей отправки состоит в том, что они проще в использовании и гораздо эффективнее при выполнении этих задач, чем соответствующий код с резьбой. Concurrency Programming Guide