2

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

*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 46 beyond bounds [0 .. 45]'

这是我正在使用的代码。

 [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

            }
        }];

提供者对象是我的自定义数据库提供者。但是删除这段代码并没有什么好处。顶部的 NSLog 永远不会被触发,这告诉我枚举代码存在我无法控制的问题。有没有其他人经历过这个?

4

3 回答 3

0

我看到了同样的问题。这是苹果方面的一个错误。

他们在单独的线程中执行枚举块并崩溃超出范围。真可惜!我什至找不到办法抓住这个。应用程序崩溃,在他们的库自行修复之前您无能为力。

修改相机胶卷或有时启动 iPhoto for iPad 可以解决问题,但它会再次出现。幸运的是,这种情况不会经常发生,但苹果必须对此做出反应。

于 2012-05-17T21:31:46.280 回答
0

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

我在这里发布了详细信息:ALAssetsLibrary 似乎返回了错误数量的照片

于 2012-08-20T16:54:23.777 回答
-1

我的照片库显然出了点问题。清除我的照片并再次运行应用程序后,我不再遇到此问题。

当然希望我知道实际问题是什么以及为什么 AssetsLibrary 尝试枚举越界。

于 2011-12-05T22:07:19.317 回答