見出し画像

PhotosのPHAssetCollection取得方法のメモ

iOSのPhotosフレームワーク、あるいは標準のPhotos(写真)アプリの話。Photosフレームワークのどのメソッドでどのタイプを指定したときにどのアルバムが取れるのか?そのアルバムって何?というのがAPIリファレンス読んでるだけだとよくわからなかったので実際に取得して確認してみた。

写真アプリにおける分類

iOS 14.5現在の写真アプリを見ると、一番左に「ライブラリ」タブがあり、

・年別
・月別
・日別
・すべての写真

が選択できる。

また「アルバム」タブには「マイアルバム」セクションがあり、

・最近の項目
・お気に入り
・ユーザーが作成した各種アルバム

が並ぶ。

続いて「ピープルと撮影地」があり、

・人物
・撮影地

ごとに写真がまとめられている。

続いて「メディアタイプ」セクションに

・ビデオ
・セルフィー
・ポートレート
・パノラマ
・スクリーンショット
・画面収録

が並ぶ。「その他」セクションは省略。

PhotosでのPHAssetCollectionの取得方法

## スマートアルバム

たとえばわかりやすいのでいうと、「メディアタイプ」セクションの「ビデオ」に相当するアルバムは次のように取得する。

let videoAssetCollection = PHAssetCollection.fetchAssetCollections(
   with: .smartAlbum,
   subtype: .smartAlbumVideos,
   options: nil
).firstObject

この「ビデオ」や、「スクリーンショット」等、システムが自動で生成するアルバムはスマートアルバム(smart album)と呼ばれるらしい。

## モーメント

「モーメント」(moments)は、fetchMomentsメソッドか、

let result = PHAssetCollection.fetchMoments(with: nil)
return result.objects(at: IndexSet(0..<result.count))

またはfetchAssetCollectionsで.momentを指定して取得できる。

let result = PHAssetCollection.fetchAssetCollections(with: .moment, subtype: .any, options: nil)
return result.objects(at: IndexSet(0..<result.count))

ここから先は

1,391字
文章やサンプルコードは多少荒削りかもしれませんが、ブログや書籍にはまだ書いていないことを日々大量に載せています。たったの400円で、すぐに購読解除してもその月は過去記事もさかのぼって読めるので、少しでも気になる内容がある方にはオトクかと思います。

技術的なメモやサンプルコード、思いついたアイデア、考えたこと、お金の話等々、頭をよぎった諸々を気軽に垂れ流しています。

最後まで読んでいただきありがとうございます!もし参考になる部分があれば、スキを押していただけると励みになります。 Twitterもフォローしていただけたら嬉しいです。 https://twitter.com/shu223/