我正在使用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