嗨,我正在呼叫ALAssetsLibrary

-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”

下一个日志是“资产类型2”

但是第三个日志永远不会被调用。

任何想法我在做什么错?

最佳答案

valueForProperty:返回一个对象。对于ALAssetsGroupPropertyType,它返回包装在NSNumber中的ALAssetGroupType常量。 (请参见docs here。)

因此,通过强制转换为ALAssetGroupType,您可以将对象的内存地址用作切换值。您需要使用intValue获取NSNumber的基础整数值:

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

08-15 19:51