2011-12-12 71 views
2

我遍歷iOS設備上的相冊列表。在遍歷這個組後,我想簡單地打印出找到的專輯的數量。找出我的異步調用完成的時間

在我的代碼中,只有在所有相冊加載完成後才執行NSLog語句,我必須更改哪些內容。

ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];  
NSMutableArray *tempArray = [[NSMutableArray alloc] init]; 

void (^groupBlock)(ALAssetsGroup *, BOOL *) = ^(ALAssetsGroup *group, BOOL *stop){ 
    if (group == nil){return;} 
    [tempArray addObject:group]; 
}; 

void (^failureBlock)(NSError *) = ^(NSError *error) { 
    NSLog(@"A problem occured %@", [error description]);          
}; 

[library enumerateGroupsWithTypes:ALAssetsGroupAll 
         usingBlock:groupBlock 
        failureBlock:failureBlock]; 

NSLog(@"%i albums were loaded", tempArray.count); 

回答

5

groupBlock將接收的一組nil當枚舉完成的,所以改變:

if (group == nil){return;} 

NSLog(@"%i albums were loaded", tempArray.count); 

從類參考:

枚舉完成後,將調用枚舉塊,並將組設置爲nil

[source]

相關問題