0

因此,我試圖獲取所有標記爲Facebook的圖片,以便我可以在iPad上看到它們,但是我想讓這個功能可以在每次需要時調用它獲取網址。問題是,在我調用這個函數之後,數組是零的,因爲我得到的值在一個塊內。如何製作數組來存儲我以後使用的數據?獲取Facebook圖片供以後使用

-(NSArray *)getFacebookTaggedPictures 
{ 
__block NSArray *taggedPictures = [[NSArray alloc]init]; 

[FBRequestConnection startWithGraphPath:@"me/photos" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{ 
    if(!error) 
    { 
     taggedPictures = [(NSArray *)[result data]copy]; 
     //NSLog(@"the tagged pictures are: %@",result); 
    } 
}]; 
return taggedPictures; 
} 

回答

0

正如你已經正確注意到,您返回是空的,因爲你的方法從API響應已收到,並解析爲taggedPicturescompletionHandler塊內之前返回數組。

您必須將數組保存在該塊內。我建議改變你的方法如下:

-(NSArray *)getFacebookTaggedPicturesWithCompletion:(void (^)(NSArray* photos))completion; 

其中調用方法將通過適當的完成塊來處理獲得的圖片。 (即將它們保存到磁盤,顯示它們,對它們進行一些處理等):

void (^loggerBlock)(NSArray* photos) = ^(NSArray *array) { 
    NSLog(@"obtained photos: %@",[array description]); 
    //save here instead of logging 
}; 

[self getFacebookTaggedPicturesWithCompletion:loggerBlock]; 

希望這有助於。

+0

我該如何在那裏保存?我不知道如何編寫代碼來實現它,這些塊越來越好 –

+0

您可以使用您在其他地方使用的相同代碼。如果您使用CoreData進行持久性,請注意:「NSManagedObjectContext」不是線程安全的。 –

+0

我沒有使用核心數據,我不需要,只是想與我從這個方法得到的數據有一個數組。 –