1
現在、アルバムごとに電話にローカルに保存されている画像を表示する必要があるアプリで作業しています。私はすべてのアルバム名を表示することができました。そして、アルバムが選択されたら、私は画像を表示したいと思います。私はどのようにそれをすることができ、これはバグが2014年に戻っていたことを読んで、しかししている'フェッチオプションでサポートされていない述語:title == "osx"の "Test"'
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Unsupported predicate in fetch options: title == "Test"'
:私はエラーを取得しておく
options.predicate = NSPredicate(format: "title = %@", albumName)
:
func getLocalAlbums() {
var albums: [AlbumModel] = [AlbumModel]()
albumNamesDevice.removeAll()
let options = PHFetchOptions()
let topLvlOptions = PHFetchOptions()
let userAlbums = PHAssetCollection.fetchAssetCollectionsWithType(.SmartAlbum, subtype: .SmartAlbumUserLibrary, options: options)
let topLvlCollection = PHCollectionList.fetchTopLevelUserCollectionsWithOptions(topLvlOptions)
let allAlbums = [topLvlCollection, userAlbums]
for i in 0 ..< allAlbums.count {
let result = allAlbums[i]
result.enumerateObjectsUsingBlock { (asset, index, stop) in
if asset is PHAssetCollection {
let ass: PHAssetCollection = asset as! PHAssetCollection
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "mediaType = %d", PHAssetMediaType.Image.rawValue)
let newAlbum = AlbumModel(name: ass.localizedTitle!, count: ass.estimatedAssetCount, collection: ass)
albums.append(newAlbum)
}
}
}
for item in albums {
self.albumNamesDevice.append(item.name)
}
}
func getAssetsFromAlbum(albumName: String) -> [PHAsset] {
let options = PHFetchOptions()
// Bug from Apple since 9.1, use workaround
options.predicate = NSPredicate(format: "title = %@", albumName)
options.sortDescriptors = [ NSSortDescriptor(key: "creationDate", ascending: true) ]
let results = PHAsset.fetchAssetsWithMediaType(.Image, options: options)
var assets = [PHAsset]()
results.enumerateObjectsUsingBlock { (obj, index, stop) in
if let asset = obj as? PHAsset {
assets.append(asset)
}
}
return assets
}
問題は、次の行でありますこれはまだAppleの開発者によって解決されていないことですか?
誰もがこのために回避策を知っていますか?