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