NsrangeException с использованием -[alassetsgroup enumerateassetsusingblock:

StackOverflow https://stackoverflow.com/questions/8300940

Вопрос

В настоящее время я использую довольно стандартный код для перечисления активов в группе. За исключением того, что у меня есть новая ошибка

*** 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

Что -то было, очевидно, испорчено с моей библиотекой фото. После очистки моих фотографий и снова запустив приложение, я больше не получаю эту проблему.

Конечно, я бы хотел, чтобы я знал, в чем фактическая проблема и почему Assetslibrary пытался перечислять мимо границ.

Другие советы

Эту ошибку можно обойти, установив фильтры на фотографии, а затем видео и перечисление для каждого из них по очереди, вместо того, чтобы держать ее в «активах по умолчанию».

Я разместил здесь: Alassetslibrary, кажется, возвращает неправильное количество моих фотографий

Я вижу ту же проблему. Это ошибка на стороне Apple.

Они выполняют блок перечисления в отдельном потоке и сбои, выходя за пределы границ. Какой позор! Я не могу найти способ даже поймать это. Приложение сбоя, и вы ничего не можете сделать, пока их библиотека не исправит себя.

Изменение рулона камеры или иногда запуска iPhoto для iPad решает проблему, но он вернется. К счастью, это не происходит слишком часто, но Apple должна реагировать на это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top