前提
要素 | バージョン |
---|---|
xcode | 8.2.1 |
Swift | 3.0.2 |
iPhone | 6s |
iOS | 10.2.1 |
また、以下を満たした状態。以下はググればスグ出る内容なので本記事では割愛
- PhotosFrameworkを利用できる状態にある
- ライブラリの利用をユーザから許可を取っている
概要
アルバム名を指定し、そのアルバムが端末内に存在するかをチェックし、存在しない場合に新規作成したい。適当にググって出てきた日本語の参考ページ通りにコードを書いても動かなかったので、公式リファレンスを参考に自前で実装。
コード
/** * 端末に指定した名称のアルバムを作成する * ただし既に同名のアルバムが存在する場合は作成しない * @params albumTitle アルバム名 * @params callback アルバム生成後に呼び出されるコールバック */ func createNewAlbum(albumTitle: String, callback: @escaping (Bool) -> Void) { if self.checkAlbumExists(albumTitle: albumTitle) { callback(true) } else { PHPhotoLibrary.shared().performChanges({ PHAssetCollectionChangeRequest.creationRequestForAssetCollection(withTitle: albumTitle) }) { (isSuccess, error) in callback(isSuccess) } } } /** * 端末に指定した名称のアルバムが存在するかを戻す * @params albumTitle アルバム名 * @return 存在する場合True */ func checkAlbumExists(albumTitle: String) -> Bool { let albums = PHAssetCollection.fetchAssetCollections(with: PHAssetCollectionType.album, subtype: PHAssetCollectionSubtype.albumRegular, options: nil) for i in 0 ..< albums.count { let album = albums.object(at: i) if album.localizedTitle != nil && album.localizedTitle == albumTitle { return true } } return false }
実行例
“グッチ裕三コレクション”アルバムが存在しない場合に作成する。既に存在していたか、作成に成功した場合に”成功”が出力される
createNewAlbum(albumTitle: "グッチ裕三コレクション") { (isSuccess) in if isSuccess { print("成功") } else { print("失敗") } }