SwitchステートメントのAlassetGrouptypeの比較
-
08-10-2019 - |
質問
こんにちは私は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];
所属していません StackOverflow