Confrontando ALAssetGroupType in un'istruzione switch
-
08-10-2019 - |
Domanda
Ciao io chiamo di ALAssetsLibrary
-enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:block failureBlock:failure;
poi dentro l'enumerazione bloccare voglio confrontare il tipo di gruppo tornato e aggiungerlo alla matrice rilevante. Ho cercato
^( 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 tracce di registro iniziali fuori "Gruppo ALAssetsGroup - Nome: Photo Library, Tipo: Album, Assets count: 177"
Il prossimo log è "Tipo 2"
ma il terzo registro non arrivano mai chiamato.
Tutte le idee che sto facendo male?
Soluzione
valueForProperty:
restituisce un oggetto. Nel caso di ALAssetsGroupPropertyType
restituisce un costante ALAssetGroupType avvolto in un NSNumber . (Vedere docs qui .)
Quindi, per colata a ALAssetGroupType
si sta utilizzando l'indirizzo di memoria dell'oggetto come valore interruttore. È necessario per ottenere il valore intero di fondo della NSNumber utilizzando intValue
:
ALAssetGroupType assetType =
[[group valueForProperty:ALAssetsGroupPropertyType] intValue];