現在、かなり標準的なコードを使用して、グループ内のアセットを列挙しています。今を除いて、新しいエラーがあります
*** 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 が起動されることはありません。これは、列挙コードに制御できない問題があることを示しています。他の誰かがこれを経験しましたか?