2

你好我打电话比较ALAssetGroupType ALAssetsLibrary的在switch语句

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

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

任何想法我做错了什么?

回答

6

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

因此,通过转换为ALAssetGroupType,您将使用对象的内存地址作为开关值。您需要使用intValue获得NSNumber的基础整数值:

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

谢谢你的工作。我阅读文档,但我没有意识到我必须得到底层int。 – 2010-12-11 18:54:08

+0

非常好,很高兴帮助! – 2010-12-11 19:41:34