2016-08-03 83 views
0

我一直在尋找無處不在,但一直未能找到答案。IOS圖片庫獲取給定照片的相冊名稱

在IOS PhotosFramework中,我是如何拍攝圖像/ PHAsset並找出所有收藏/相冊分配給的內容?

我已經知道如何從那裏獲得所有專輯的列表,我也可以獲取每張專輯中的所有圖像。但是我怎樣才能以相反的方式做到這一點 - 即給定PHAsset如何獲取分配給它的唱片集/收藏集的名稱。

這裏是我得在相機膠捲的所有專輯的列表的代碼:

-(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:獲取包含它的相冊集。如果您只需要用戶創建的相冊,請通過PHAssetCollectionTypeAlbum獲取type參數;如果您還想要智能相冊(如相機膠捲,或其他自動收集的相冊(如全景圖或屏幕截圖)),請再次調用並通過PHAssetCollectionTypeSmartAlbum

調用完畢後,您可以枚舉結果並讀取每個結果的localizedTitle。 (順便說一句,PHFetchResult支持NSFastEnumeration,所以你不必使用enumerateObjectsUsingBlock除非你想出於某種原因...你可以只使用一個for - in環)

+0

感謝Rickster!這正是我需要的。感謝你的幫助。 – Pankaj