Comparando ALAssetGroupType en sentencia switch
-
08-10-2019 - |
Pregunta
Hola estoy llamando de ALAssetsLibrary
-enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:block failureBlock:failure;
A continuación, dentro de la enumeración bloque I quiero comparar el tipo de grupo devuelto y añadirlo a la matriz correspondiente. He tratado
^( ALAssetsGroup *group, BOOL *stop )
{
NSLog(@"Group %@", group );
ALAssetGroupType assetType = (ALAssetGroupType)[group valueForProperty:ALAssetsGroupPropertyType];
NSLog( @"Asset type %@", assetType );
switch( assetType )
{
case ALAssetsGroupAplbum :
NSLog( @"Found ALBUM" );
[albums addObject:group];
break;
}
}
Las huellas de registro inicial del total "Grupo ALAssetsGroup - Nombre: Biblioteca de fotos, Tipo: Album, Activos count: 177"
La siguiente registro es "Tipo de activo 2"
pero el tercer registro de llamadas nunca llegan.
Alguna idea de lo que estoy haciendo mal?
Solución
valueForProperty:
devuelve un objeto. En el caso de ALAssetsGroupPropertyType
vuelve una constante ALAssetGroupType envuelto en una NSNumber . (Véase documentos aquí .)
Así que echando a ALAssetGroupType
que está utilizando la dirección de memoria del objeto como valor de cambio. Que necesita para obtener el valor entero subyacente del uso de intValue
NSNumber:
ALAssetGroupType assetType =
[[group valueForProperty:ALAssetsGroupPropertyType] intValue];