Cuando uso ALAssetsLibrary para obtener fotos locales, funciona bien. Pero después de eliminar algunas fotos con la aplicación 'Fotos', mi aplicación falla.ALAssetsLibrary parece devolver un número incorrecto de mis fotos
Crash información es:
"Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[NSOrderedSet enumerateObjectsAtIndexes:options:usingBlock:]: index 14 beyond bounds [0 .. 9]'".'14'
Parece que el número de fotos locales sigue siendo el mismo que befoore. E incluso después de salir de mi aplicación y reiniciarla de nuevo, aún falla.
local código de acceso de la foto:
dispatch_async(dispatch_get_main_queue(),^
{
@autoreleasepool
{
ALAssetsLibraryAccessFailureBlock failureblock = ^(NSError *myerror)
{
NSLog(@"error occour =%@", [myerror localizedDescription]);
};
ALAssetsGroupEnumerationResultsBlock groupEnumerAtion = ^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if (result!=NULL)
{
if ([[result valueForProperty:ALAssetPropertyType] isEqualToString:ALAssetTypePhoto])
{
[self.g_imageArray addObject:result];
}
}
};
ALAssetsLibraryGroupsEnumerationResultsBlock
libraryGroupsEnumeration = ^(ALAssetsGroup* group, BOOL* stop)
{
if (group == nil)
{
return;
}
if (group!=nil) {
[group enumerateAssetsUsingBlock:groupEnumerAtion];
}
[self updatephotoList];
};
self.library = [[ALAssetsLibrary alloc] init];
[self.library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos
usingBlock:libraryGroupsEnumeration
failureBlock:failureblock];
}
});
Si tomo otra foto con la cámara del sistema, mi solicitud hace de nuevo en Aceptar.
Una pregunta: ¿está seguro de que '[auto updatephotoList]' se llamará _after_ el último bloque enumeración de '[grupo enumerateAssetsUsingBlock ... ] '? Tengo docenas de bloqueos en mi aplicación, así que verificará este enfoque y veré cómo funciona: http://stackoverflow.com/a/23378441/649379 – SoftDesigner