2014-05-25 32 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