2014-05-25 29 views
0

我有一個數組中的FB用戶的相冊,我想獲取每個相冊的圖像,我必須調用下面的方法與albumId, 但我無法在For循環中調用此方法,我希望所有的專輯圖片,問題是,循環執行,而無需調用「FBRequestConnection startWithGraphPath:graphPath」功能,所以我沒有得到響應 問題是完成處理程序請告訴我如何調用方法與完成處理for循環呼叫完成處理方法在循環

arrAlbumIds=(11523252,11523245,11523278) 

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



     NSString * graphPath=[NSString stringWithFormat:@"/%@/photos",[arrAlbumIds objectAtIndex:i]]; 

     [FBRequestConnection startWithGraphPath:graphPath 
            parameters:nil 
            HTTPMethod:@"GET" 
           completionHandler:^(
                FBRequestConnection *connection, 
                id result, 
                NSError *error 
               ) { 
            /* handle the result */ 

            NSLog(@"album images:%@",result); 

            FBGraphObject * response=[[FBGraphObject alloc]init]; 
            response=result; 

            NSMutableDictionary * dictImagesData=[[NSMutableDictionary alloc]init]; 
            dictImagesData=response; 


            NSMutableArray * arrImagesData=[[NSMutableArray alloc]init]; 
            arrImagesData=[dictImagesData valueForKey:@"data"]; 


            FBGraphObject * fbGraphImages=[[FBGraphObject alloc]init]; 
            fbGraphImages=[arrImagesData valueForKey:@"images"]; 

            NSDictionary * dictImages=[[NSDictionary alloc]init]; 
            dictImages=fbGraphImages; 

            NSMutableArray * arrImages=[[NSMutableArray alloc]init]; 
            arrImages=[arrImagesData valueForKey:@"images"]; 



            //Get Url of Each Image 
            //self.arrFbAlbumImages=[[NSMutableArray alloc]init]; 

            [arrFacebookAlbumThumbnail addObject:[arrImages valueForKey:@"source"]]; 

            NSLog(@"arrFacebookAlbumThumbnail=%@",arrFacebookAlbumThumbnail); 
           }]; 
} 
+1

目前還不清楚你問什麼下一個Facebook的呼叫。此代碼中沒有遞歸 – Paulw11

+0

FBRequestConnetion startWithGrapPath: 此方法在for循環中被調用,但for循環執行不等待完成處理程序,這就是爲什麼不會調用完成處理程序方法 – user3673300

+0

這只是迭代。這不是遞歸http://en.wikipedia.org/wiki/Recursion_(computer_science)該方法是異步的,因爲網絡操作需要時間。你的完成處理程序將在任務完成時被調用,但你可以期待'startWithGraphPath'立即返回 – Paulw11

回答

0

從您的意見,它看起來像Facebook API不喜歡併發操作。

此代碼消除了for循環,並調用完成處理程序

int i=0; 

if (arrAlbumIds.count > 1) 
{ 


    NSString * graphPath=[NSString stringWithFormat:@"/%@/photos",[arrAlbumIds objectAtIndex:i]]; 

    void (^completionBlock)(FBRequestConnection *connection,id result,NSError *error)= ^(FBRequestConnection *connection, 
         id result, 
         NSError *error) { 
    NSLog(@"album images:%@",result); 

    FBGraphObject * response=[[FBGraphObject alloc]init]; 
    response=result; 

    NSMutableDictionary * dictImagesData=[[NSMutableDictionary alloc]init]; 
    dictImagesData=response; 


    NSMutableArray * arrImagesData=[[NSMutableArray alloc]init]; 
    arrImagesData=[dictImagesData valueForKey:@"data"]; 


    FBGraphObject * fbGraphImages=[[FBGraphObject alloc]init]; 
    fbGraphImages=[arrImagesData valueForKey:@"images"]; 

    NSDictionary * dictImages=[[NSDictionary alloc]init]; 
    dictImages=fbGraphImages; 

    NSMutableArray * arrImages=[[NSMutableArray alloc]init]; 
    arrImages=[arrImagesData valueForKey:@"images"]; 


    //Get Url of Each Image 
    //self.arrFbAlbumImages=[[NSMutableArray alloc]init]; 

    [arrFacebookAlbumThumbnail addObject:[arrImages valueForKey:@"source"]]; 

    NSLog(@"arrFacebookAlbumThumbnail=%@",arrFacebookAlbumThumbnail); 

    if (++i<arrAlbumIds.count) { 
     NSString * graphPath=[NSString stringWithFormat:@"/%@/photos",[arrAlbumIds objectAtIndex:i]]; 
    [FBRequestConnection startWithGraphPath:graphPath 
            parameters:nil 
            HTTPMethod:@"GET" 
           completionHandler:completionBlock]; 
    } 
    }; 

    [FBRequestConnection startWithGraphPath:graphPath 
            parameters:nil 
            HTTPMethod:@"GET" 
           completionHandler:completionBlock]; 

} 
+0

不適用於我,仍然[FBRequestConnection startWithGraphPath:graphPath 參數:無 HTTPMethod:@「GET」 永遠不會執行 – user3673300

+0

如果您在調用startWithGraphPath之前將NSLog放入調度塊中,是否將打印到日誌中? – Paulw11

+0

已經打印出fb完成處理程序的NSlog方面,但FB compeletion處理程序日誌沒有被打印 – user3673300