2016-08-03 2 views
0

私はあらゆるところを見てきましたが、これに対する答えを見つけることができませんでした。IOSフォトライブラリは、特定の写真のアルバム名を取得します

IOS PhotosFrameworkではどのようにイメージ/ PHAssetを取得し、それが割り当てられているすべてのコレクション/アルバムを見つけることができますか?

私はすでにそこからすべてのアルバムのリストを取得する方法を知っています。また、各アルバム内のすべての画像を取得することもできます。しかし、私はそれを他の方法、つまり、特定のPHAssetに割り当てられているAlbum/Collectionsの名前を取得する方法をどのようにして行うのでしょうか。ここで

が、私はカメラロール内のすべてのアルバムのリストを取得する必要があるコードです:古いアップルのコマーシャルを言い換えする

-(void) listAllAlbums{ 

    PHFetchOptions *userAlbumsOptions = [PHFetchOptions new]; 
    userAlbumsOptions.predicate = [NSPredicate predicateWithFormat:@"estimatedAssetCount > 0"]; 

    PHFetchResult *userAlbums = [PHAssetCollection fetchAssetCollectionsWithType:PHAssetCollectionTypeAlbum subtype:PHAssetCollectionSubtypeAny options:userAlbumsOptions]; 

    NSLog(@"--------- entered %s ------------- ", __PRETTY_FUNCTION__); 

    [userAlbums enumerateObjectsUsingBlock:^(PHAssetCollection *collection, NSUInteger idx, BOOL *stop) { 
     NSLog(@"album title %@", collection.localizedTitle); 
    }]; 

    NSLog(@"--------- end of %s ------------- ", __PRETTY_FUNCTION__); 

} 

おかげ

答えて

1

を...そのためのAPIがあります。

PHAssetがある場合は、それを含むアルバムのセットをfetchAssetCollectionsContainingAsset:withType:options:で取得できます。ユーザー作成のアルバムだけが必要な場合は、typeパラメータにはPHAssetCollectionTypeAlbumを渡します。スマートアルバム(カメラロール、またはパノラマやスクリーンショットなどの自動的に収集された他のアルバムなど)も必要な場合は、もう一度電話してPHAssetCollectionTypeSmartAlbumを渡してください。

これを呼び出した後、結果を列挙してそれぞれのlocalizedTitleを読むことができます。 (ちなみに、PHFetchResultNSFastEnumerationをサポートしていますので、あなたには、いくつかの理由のために...あなただけfor使用することができますするのでない限り、あなたはenumerateObjectsUsingBlockを使用する必要はありません - 。inループ)

+0

おかげRicksterを!これはまさに私が必要としていたものです。あなたの助けに感謝。 – Pankaj

関連する問題