首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用-[ALAssetsGroup enumerateAssetsUsingBlock:]进行NSRangeException

使用-[ALAssetsGroup enumerateAssetsUsingBlock:]进行NSRangeException
EN

Stack Overflow用户
提问于 2011-11-29 03:08:19
回答 3查看 2.1K关注 0票数 2

我目前正在使用一些非常标准的代码来枚举组中的资产。除了现在我有一个新的错误

代码语言:javascript
复制
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 46 beyond bounds [0 .. 45]'

这是我正在使用的代码。

代码语言:javascript
复制
 [group enumerateAssetsWithOptions:NSEnumerationReverse usingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop) {
            NSLog(@"Asset %@", result);
            if (result != nil)
            {
                Asset *asset = [provider newAsset];
                asset.date = [result valueForProperty:ALAssetPropertyDate];
                id duration = [result valueForProperty:ALAssetPropertyDuration];
                asset.duration =  [NSDecimalNumber decimalNumberWithString:[NSString stringWithFormat:@"%@", duration]];
                CLLocation *location = [result valueForProperty:ALAssetPropertyLocation];
                asset.location = [location description];
                asset.orientation = [result valueForProperty:ALAssetPropertyOrientation];
                asset.type = [result valueForProperty:ALAssetPropertyType];
                NSDictionary *urls = [result valueForProperty:ALAssetPropertyURLs];
                for (NSString * key in urls) {
                    NSLog(@"Url = %@",[urls objectForKey:key]);
                    asset.url = [NSString stringWithFormat:@"%@", [urls objectForKey:key]];
                }

                [assetGroup addAssetsObject:asset];

                [asset release]; // Corrected based on comments

            }
        }];

provider对象是我的自定义数据库提供程序。但是删除这些代码并没有什么好处。最上面的NSLog永远不会被触发,这告诉我枚举代码出现了我无法控制的问题。还有没有人经历过这种情况?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-06 06:07:19

我的图片库明显出了点问题。在清理我的照片并再次运行应用程序后,我不再收到这个问题。

当然,我希望我知道真正的问题是什么,以及为什么AssetsLibrary试图枚举超过界限。

票数 -1
EN

Stack Overflow用户

发布于 2012-05-18 05:31:46

我也看到了同样的问题。这是苹果方面的一个漏洞。

它们在单独的线程中执行枚举块,并在超出边界时崩溃。太遗憾了!我甚至找不到一种方法来捕捉它。应用程序崩溃,在他们的库自我修复之前,你什么也做不了。

修改相机卷轴或有时启动用于iPad的iPhoto可以修复该问题,但它会重新出现。幸运的是,这种情况并不经常发生,但苹果必须对此做出反应。

票数 0
EN

Stack Overflow用户

发布于 2012-08-21 00:54:24

通过将过滤器设置为照片,然后是视频,并依次枚举每个过滤器,而不是将其保留为默认的“资产”,可以绕过此错误。

我在这里发布了详细信息:ALAssetsLibrary seems to return wrong number of my photos

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8300940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档