La comparaison ALAssetGroupType dans l'instruction switch
-
08-10-2019 - |
Question
Salut, je fais appel
de ALAssetsLibrary-enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:block failureBlock:failure;
puis à l'intérieur du bloc énumération je veux comparer le type de groupe retourné et l'ajouter au tableau pertinent. J'ai essayé
^( 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;
}
}
Les traces du journal initial sur "Groupe ALAssetsGroup - Nom: Photo Library, Type: Album, compte Actif: 177"
Le prochain journal est "le type d'actif 2"
mais le troisième journal ne se l'appelle.
Toutes les idées que je fais mal?
La solution
valueForProperty:
renvoie un objet. Dans le cas de ALAssetsGroupPropertyType
il retourne une constante ALAssetGroupType enveloppées dans un NSNumber . (Voir docs .)
par coulée à vous ALAssetGroupType
utilisez l'adresse mémoire de l'objet en tant que valeur de votre commutateur. Vous devez obtenir la valeur entière sous-jacente de l'NSNumber en utilisant intValue
:
ALAssetGroupType assetType =
[[group valueForProperty:ALAssetsGroupPropertyType] intValue];