読者です 読者をやめる 読者になる 読者になる

ObjecTips

基本Objective-Cで iOS とか OS X とか

Photos.framework でカメラロールを取得する

Objective-C Tips Photos 写真 PHFetchResult PHAssetCollection

Photos.framework でカメラロールを取得する方法が分かり辛かったので備忘


fetchAssetCollectionsWithType:subtype:options: メソッドの引数の type で
PHAssetCollectionTypeAlbum を指定した場合、写真アプリで作成したものとiTunesで同期したアルバムの一覧が取得できる。
PHAssetCollectionTypeSmartAlbum ではバースト、カメラロール、最後に追加した項目などのシステム作成のアルバム一覧が取得できる。
PHAssetCollectionTypeMoment では時間と位置情報にもとづくグループ(モーメント)が取得できる。

写真アプリの「アルバム」タブにはバースト、カメラロール、人々、自分で作成したアルバムとフォルダ等々がまとめて表示されているので、PHAssetCollectionTypeAlbumPHAssetCollectionTypeSmartAlbum の混合が表示されている事になる。「アルバム」という名称に惑わされてこの点がちょっと分かり辛かった。

PHAssetCollectionTypeSmartAlbum で利用可能な subtype は以下のようになる。

PHAssetCollectionSubtype 内容
PHAssetCollectionSubtypeSmartAlbumGeneric *1
PHAssetCollectionSubtypeSmartAlbumPanoramas パノラマ
PHAssetCollectionSubtypeSmartAlbumVideos ビデオ
PHAssetCollectionSubtypeSmartAlbumFavorites お気に入り
PHAssetCollectionSubtypeSmartAlbumTimelapses タイムラプス
PHAssetCollectionSubtypeSmartAlbumAllHidden 非表示
PHAssetCollectionSubtypeSmartAlbumRecentlyAdded 最後に追加した項目
PHAssetCollectionSubtypeSmartAlbumBursts バースト
PHAssetCollectionSubtypeSmartAlbumSlomoVideos スローモーション
PHAssetCollectionSubtypeSmartAlbumUserLibrary カメラロール

*1:ドキュメントには A smart album of no more specific subtype. This subtype applies to smart albums synced to the device from iPhoto. との記載があるが、iPhoto から同期したスマートアルバムは PHAssetCollectionTypeAlbum と PHAssetCollectionSubtypeAlbumSyncedAlbum の組み合わせで取得できるようになっていて、PHAssetCollectionSubtypeSmartAlbumGeneric では取得できない。