alassetlibrary enumerateGroupsWithTypes不返回任何数据



我使用AssetsLibrary框架来检索iPhone中的所有资产组。我有一些像这样的代码片段:

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)当我在iOS模拟器中运行我的应用程序时(在Xcode中使用command + R), groupEnumerator将被执行,组名将在控制台中打印出来

2)我写了一些单元测试应用程序,当我运行单元测试(使用命令+ U在Xcode中),它调用上面的代码片段在我的应用程序,它被称为groupEnumerator似乎没有得到执行,没有一个组名称将打印,failureBlock不会叫,我没有得到任何错误在运行测试,但该集团枚举不工作是应用。

我检查了苹果的文档,我知道这个方法(enumerateGroupsWithTypes:usingBlock:failureBlock:)是异步的,但是,即使我在单元测试中等待了很长时间,我也没有看到groupEnumerator被执行。

我正在用Xcode 4.2测试iOS 5.0。

任何帮助都是感激的。谢谢。

在这个问题上停留了好几天,无法找出这个问题的确切原因

而不是在Xcode 4中使用OCUnit,我必须切换到使用gh-unit,这实际上解决了这个问题。这似乎与Xcode 4运行测试目标的方式有关。

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

最新更新