2

Salut, je fais appelcomparaison ALAssetGroupType dans l'instruction switch

de ALAssetsLibrary
-enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:block failureBlock:failure; 

puis à l'intérieur du bloc d'énumération je veux comparer le type de groupe est revenu 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; 
    } 
} 

Le journal initial des traces sur "Groupe ALAssetsGroup - Nom: Photo Library, Type: Album, COUNT Actifs: 177"

Le prochain journal est "Type d'actif 2"

mais le troisième journal ne s'appelle jamais.

Des idées de ce que je fais mal?

Répondre

6

valueForProperty: renvoie un objet. Dans le cas de ALAssetsGroupPropertyType, il renvoie une constante ALAssetGroupType enveloppée dans un numéro NS. Donc, en transposant ALAssetGroupType, vous utilisez l'adresse mémoire de l'objet comme valeur de votre commutateur. Vous devez obtenir la valeur entière sous-jacente du NSNumber en utilisant intValue:

ALAssetGroupType assetType = 
[[group valueForProperty:ALAssetsGroupPropertyType] intValue]; 
+0

Merci Cela a fonctionné. J'ai lu les docs mais je ne me suis pas rendu compte que je devais obtenir l'int sous-jacente. –

+0

Excellent, content que ça a aidé! –