2

こんにちは私は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」です

しかし、3番目のログは呼び出されません。

私が間違っていることについて何か考えはありますか?

4

1 に答える 1

6

valueForProperty:オブジェクトを返します。この場合、NSNumberでラップされALAssetsGroupPropertyTypeたALAssetGroupType定数を返します。(ここのドキュメントを参照してください。)

したがって、キャストするALAssetGroupTypeことで、オブジェクトのメモリアドレスをスイッチ値として使用します。以下を使用して、NSNumberの基になる整数値を取得する必要がありますintValue

ALAssetGroupType assetType = 
 [[group valueForProperty:ALAssetsGroupPropertyType] intValue];
于 2010-12-11T18:22:46.820 に答える