当我启动一张照片时,像是:
let assetCollections: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .Any, options: nil)
我得到了几个专辑的结果,所以我可以迭代数组并将它们的标题放在一个表视图中。
但是:当我使用一个谓词来过滤和获取(例如专辑“Camera Roll”)时,结果总是一个空数组:(而且我100%确定Camera Roll存在,因为如果没有选项,它会获取它)
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", "Camera Roll")
let assetCollections: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .Any, options: fetchOptions)
let album: PHAssetCollection = assetCollections.firstObject as! PHAssetCollection
我已经在网上阅读了4或5种不同的方法,他们都有这个谓词,不管是“title=%@”、“localizedtitle=%@”还是“localizeddentifier=%@”。我不明白。似乎是为人工作,而不是为我。编译器在最后一行试图“展开一个nil可选值”时崩溃(因为提取结果为空)。为什么搜索一包含fetch选项就返回nil????
最佳答案
如果你想要一张照相机的相册,最好是象征性地要求它:
let collections = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: nil)
SmartAlbumUserLibrary
子类型是如何获得相机胶卷(这并不总是称为胶卷)。