我正在使用AssetsLibrary框架檢索iPhone中的所有資產組。我有一些代碼片段是這樣的:ALAssetsLibrary enumerateGroupsWithTypes不返回任何數據
NSMutableArray *groups = [[NSMutableArray alloc] initWithCapacity:5];
void (^groupEnumerator)(ALAssetsGroup*, BOOL*) = ^(ALAssetsGroup *group, BOOL *stop) {
if(group != nil) {
NSLog(@"Adding group %@", [group valueForProperty:ALAssetsGroupPropertyName]);
[groups addObject:group];
}
};
ALAssetsLibrary* library = [AssetsManager defaultAssetsLibrary];
[library enumerateGroupsWithTypes: ALAssetsGroupSavedPhotos
usingBlock:groupEnumerator
failureBlock:^(NSError * err) {NSLog(@"Erorr: %@", [err localizedDescription]);}];
而且我發現一個奇怪的現象:
1)當我運行我在iPhone模擬器應用程序(使用命令+在Xcode R),該groupEnumerator會執行和組名稱將被打印在控制檯上
2)我爲我的應用程序編寫了一些單元測試,當我運行單元測試時(在Xcode中使用命令+ U),調用上面的代碼片段在我的應用程序中,groupEnumerator似乎根本沒有被執行,並且沒有任何組名會被打印,並且failureBlock也不會被調用,並且我沒有得到任何錯誤n運行測試,但組枚舉不起作用,因爲它在應用程序中。我知道這個方法(enumerateGroupsWithTypes:usingBlock:failureBlock :)是異步的,但是,即使我在單元測試中等了很長時間,我也沒有看到groupEnumerator被執行。
我正在使用Xcode 4.2對iOS 5.0進行測試。
任何幫助表示讚賞。謝謝。
只是爲了在這裏清楚:這個,當你運行單元測試,權利只是失敗? –
是的,如果我在iOS模擬器中運行應用程序,它沒有任何問題,但如果我運行我的單元測試它不輸出任何東西。 – nybon