2011-12-01 51 views
2

我正在使用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進行測試。

任何幫助表示讚賞。謝謝。

+0

只是爲了在這裏清楚:這個,當你運行單元測試,權利只是失敗? –

+0

是的,如果我在iOS模擬器中運行應用程序,它沒有任何問題,但如果我運行我的單元測試它不輸出任何東西。 – nybon

回答

1

將這個問題困住了好幾天,找不出這個問題的確切原因。

而不是在Xcode 4中使用OCUnit,我不得不切換到使用gh單元,這實際上解決了這個問題。它似乎與Xcode 4運行測試目標的方式有關。

http://gabriel.github.com/gh-unit