gpt4 book ai didi

ios - AssetLibrary 不返回所有带有 "ALAssetsGroupAll"的 Assets

转载 作者:行者123 更新时间:2023-11-28 17:53:20 25 4
gpt4 key购买 nike

我正在使用以下代码查询资源库

ALAssetsLibrary *assetsLibrary = [self defaultAssetsLibrary];
[assetsLibrary enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:^(ALAssetsGroup *group, BOOL *stop) {
NSMutableArray *tmpAssets = [@[] mutableCopy];
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
if(result)
{
[tmpAssets addObject:result];
}
}];

NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
finished([[tmpAssets sortedArrayUsingDescriptors:@[sort]] mutableCopy]);

} failureBlock:^(NSError *error) {
finished(@[]);
NSLog(@"Error loading images %@", error);
}];

但是似乎我没有得到所有的 Assets ,如果我从外部源向 iPhone 添加图像,这些图像不会显示在从上述代码收到的 Assets 列表中……我得到的似乎是其他一切。我怀疑这可能是框架的限制,但当我使用 instagram 时,我注意到我的应用程序中丢失的照片是可见的......我如何获得每种类型的 Assets “ALAssetsGroupAll”还不够?

最佳答案

问题是您不了解 enumerateAssetsUsingBlock: 的工作原理。 它是异步的。

为了明白我的意思,让我用一些数字来划分你的代码:

// (1)
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
// (2)
if(result)
{
[tmpAssets addObject:result];
}
}];
// (3)
NSSortDescriptor *sort = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:NO];
finished([[tmpAssets sortedArrayUsingDescriptors:@[sort]] mutableCopy]);

问题是 3 在 2 之前执行。因此 tmpAssets 中还没有任何内容。

那么你应该怎么做呢?好吧,这个方法(以及其他类似工作的 ALAssets 方法)以一种非常奇怪和特殊的方式运行:他们调用他们的 block 一次,带有一个 nil 参数。 (你似乎已经意识到这一点,因为你正在做一个 nil 测试;但你还没有理解这意味着什么。)你的工作是测试一个 nil 参数。如果参数为 nil,这是最后的额外调用,现在您可以进行任何清理。所以,像这样:

// (1)
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
// (2)
if(result)
{
[tmpAssets addObject:result];
}
else
// (3) // aha, finished, this is the extra time through
{
// NOW do something with tmpAssets!
}
}];

关于ios - AssetLibrary 不返回所有带有 "ALAssetsGroupAll"的 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23760111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com