您好我正在调用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”
但第三个日志永远不会被调用。
任何想法我做错了什么?
答案 0 :(得分:6)
valueForProperty:
返回一个对象。在ALAssetsGroupPropertyType
的情况下,它返回包含在NSNumber 中的ALAssetGroupType常量。 (见docs here。)
因此,通过转换为ALAssetGroupType
,您将使用对象的内存地址作为切换值。您需要使用intValue
获取NSNumber的基础整数值:
ALAssetGroupType assetType =
[[group valueForProperty:ALAssetsGroupPropertyType] intValue];