NSrangeException使用 - [AlassetSgroup EnumerateAsetSetsetSsetSsessingBlock:
-
22-10-2019 - |
题
我目前正在使用一些漂亮的标准代码来列举组中的资产。除了现在我有一个新错误
*** 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永远不会被解雇,这告诉我枚举代码在我的控制之外遇到了问题。还有其他人经历过吗?
解决方案 3
我的照片库显然搞砸了。清理我的照片并再次运行应用程序后,我不再遇到此问题。
当然希望我知道实际问题是什么,以及为什么资产库里雷亚尔试图枚举界限。
其他提示
可以通过将过滤器设置为照片,然后为视频列举,而不是依次将其列举,而不是将其保留在默认的“资产”中,从而避免了此错误。
我在这里发布详细信息: AlassetSlebibrary似乎返回了我的照片的错误数量
我看到同样的问题。这是苹果方面的错误。
他们在单独的线程中执行枚举块,并从范围中崩溃。多可惜!我甚至找不到抓住这一点的方法。应用程序崩溃了,直到他们的库修复自己,您无能为力。
修改相机卷或有时为iPad启动iPhoto解决了问题,但它会返回。幸运的是,这并不经常发生,但是苹果必须对此做出反应。
不隶属于 StackOverflow