質問

こんにちは私は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番目のログは決してコールされません。

私が間違っていることはありますか?

役に立ちましたか?

解決

valueForProperty: オブジェクトを返します。の場合 ALAssetsGroupPropertyType AlassetGruptype定数を返します nsnumberに包まれています. 。 (見る ここにドキュメント.)

だからキャストすることによって ALAssetGroupType スイッチ値としてオブジェクトのメモリアドレスを使用しています。 nsnumberの基礎となる整数値を使用する必要があります intValue:

ALAssetGroupType assetType = 
 [[group valueForProperty:ALAssetsGroupPropertyType] intValue];
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top