ALAssetsLibrary enumerateGroupsWithTypes 不返回数据
Posted
技术标签:
【中文标题】ALAssetsLibrary enumerateGroupsWithTypes 不返回数据【英文标题】:ALAssetsLibrary enumerateGroupsWithTypes returns no data 【发布时间】:2011-12-01 14:27:01 【问题描述】:我正在使用 AssetsLibrary 框架来检索 iPhone 中的所有资产组。我有一些这样的代码sn-p:
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)我为我的应用程序编写了一些单元测试,当我运行单元测试(在 Xcode 中使用 command + U)时,它调用了上面的代码 sn-p,因为它在我的应用程序中被调用,groupEnumerator 似乎没有得到完全执行,并且不会打印任何组名,并且 failureBlock 也不会被调用,并且在运行测试时我没有收到任何错误,但组枚举不像在应用程序中那样工作。
我查看了 Apple 的文档,我知道这个方法 (enumerateGroupsWithTypes:usingBlock:failureBlock:) 是异步的,但是,即使我在单元测试中等待了很长时间,我也没有看到 groupEnumerator 被执行。
我正在使用 Xcode 4.2 对 iOS 5.0 进行测试。
感谢任何帮助。谢谢。
【问题讨论】:
只是在这里说清楚:这只会在您运行单元测试时失败,对吧? 是的,如果我在 iOS 模拟器中运行该应用程序,它可以正常工作,但如果我运行我的单元测试,它不会输出任何内容。 【参考方案1】:在这个问题上卡了几天,无法弄清楚这个问题的确切原因。
我不得不在 Xcode 4 中使用 OCUnit,而不是使用 gh-unit,这实际上解决了这个问题。这似乎与 Xcode 4 运行测试目标的方式有关。
http://gabriel.github.com/gh-unit
【讨论】:
以上是关于ALAssetsLibrary enumerateGroupsWithTypes 不返回数据的主要内容,如果未能解决你的问题,请参考以下文章
保存图像元数据 PHPhotoLibrary 与 ALAssetsLibrary