Вопрос

Привет, я звоню алассецЛибрю

-enumerateGroupsWithTypes:ALAssetsGroupAll usingBlock:block failureBlock:failure;

Затем внутри блока перечисления я хочу сравнить тип группы, возвращающую и добавить ее в соответствующий массив. я пытался

^( 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;
    }
}

Первоначальный журнал следы «Группа AlassetsGroup - Имя: Фототека, Тип: Альбом, Количество активов: 177»

Следующий журнал - это «Asset Type 2»

Но третий журнал никогда не вызывает.

Любые идеи, что я делаю не так?

Это было полезно?

Решение

valueForProperty: Возвращает объект. На случай, если ALAssetsGroupPropertyType Это возвращает постоянную азатетгруппию завернутый в nsnumber. Отказ (Видеть Документы здесь.)

Так путем литья ALAssetGroupType Вы используете адрес памяти объекта в качестве значения переключения. Вам необходимо получить базовую целочисленное значение Nsnumber, используя intValue:

ALAssetGroupType assetType = 
 [[group valueForProperty:ALAssetsGroupPropertyType] intValue];
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top