写真のアルバム名の一覧を取得ができない
現在Swiftにて、写真フォルダ内のアルバム名の一覧を取得しようとしています。
ただうまくいかず、ご教授いただきたく、ご質問させていただきました。
下記のコードだと、album.localizedTitle
に
Argument type 'String?!' does not conform to expected type 'AnyObject'
というエラーが表示されてしまいます。
class readPhotoAlbum {
static var albumList: NSMutableArray!
static func createAlbumList(){
let list = PHAssetCollection.fetchAssetCollectionsWithType(PHAssetCollectionType.Album, subtype: PHAssetCollectionSubtype.Any, options:nil)
list.enumerateObjectsUsingBlock { (album, index, isStop) -> Void in
albumList.addObject(album.localizedTitle)
}
}
}
下記のようにalbum.localizedTitle!!
とするとそのエラーは表示されなくなりますが、
ビルド途中で
fatal error: unexpectedly found nil while unwrapping an Optical value
というメッセージと共に落ちてしまいます。
breakpointを設定してみてみるとalbumList.addObject(album.localizedTitle!!)
の行で止まってしまっているようです。
class readPhotoAlbum {
static var albumList: NSMutableArray!
static func createAlbumList(){
let list = PHAssetCollection.fetchAssetCollectionsWithType(PHAssetCollectionType.Album, subtype: PHAssetCollectionSubtype.Any, options:nil)
list.enumerateObjectsUsingBlock { (album, index, isStop) -> Void in
albumList.addObject(album.localizedTitle!!)
}
}
}
なお、私の環境はXcode 7.0.1,端末はiOS9.0.2になります。
ちなみに、上記のコードを書く際に参考にさせていただいているのは、このページです。
よろしくお願い致します。
※追記
kishikawaさん、Harawoさんのコメントを参考に、
下記に修正したところ、無事アルバム名の取得をすることができました。
ありがとうございます。
class readPhotoAlbum {
static var albumList = NSMutableArray()
static func createAlbumList(){
let list = PHAssetCollection.fetchAssetCollectionsWithType(PHAssetCollectionType.Album, subtype: PHAssetCollectionSubtype.Any, options:nil)
list.enumerateObjectsUsingBlock { (album, index, isStop) -> Void in
if let album = album as? PHCollection { // PHCollectionにキャスト
if let localizedTitle = album.localizedTitle { // localizedTitleはnilの可能性がある
albumList.addObject(localizedTitle)
}
}
}
}
}