Pregunta

Actualmente estoy usando un código bastante estándar para enumerar los activos en un grupo. Excepto que ahora tengo un nuevo error

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

Aquí está el código que estoy usando.

 [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

            }
        }];

El objeto del proveedor es mi proveedor de base de datos personalizado. Pero eliminar este código no es bueno. El mejor NSLOG nunca se dispara, lo que me dice que el código de enumeración está teniendo un problema fuera de mi control. Alguien más ha experimentado esto ?

¿Fue útil?

Solución 3

Al parecer, algo estaba desordenado con mi biblioteca de fotos. Después de limpiar mis fotos y ejecutar la aplicación nuevamente, ya no tengo este problema.

Seguro que desearía saber cuál era el problema real y por qué la Biblioteca de Assets intentó enumerar más allá de los límites.

Otros consejos

Este error se puede evitar configurando los filtros en fotos, luego videos y enumerando para cada uno a su vez, en lugar de mantenerlo en los 'activos' predeterminados.

Publiqué detalles aquí: Alassetslibrary parece devolver el número incorrecto de mis fotos

Estoy viendo el mismo problema. Es un error al lado de Apple.

Ejecutan el bloque de enumeración en un hilo y bloqueo separados que salen de los límites. ¡Qué vergüenza! No puedo encontrar una manera de atrapar esto. La aplicación se bloquea, y no hay nada que pueda hacer hasta que su biblioteca se solucione.

Modificar el rollo de cámara o a veces el lanzamiento de iPhoto para iPad soluciona el problema, pero volverá. Afortunadamente, no sucede con demasiada frecuencia, pero Apple tiene que reaccionar ante esto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top