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?

È stato utile?

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];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top