Same issue for me (iOS 9.1)
Code:
private func initializeAlbum() {
let fetchOptions: PHFetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", self.albumName)
let collection: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: fetchOptions)
if let firstObject: AnyObject = collection.firstObject {
self.albumExists = true
self.assetCollection = collection.firstObject as! PHAssetCollection
if let ac = self.assetCollection {
self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
}
println("\(self.albumName) album exists")
}
else {
var albumPlaceHolder: PHObjectPlaceholder!
PHPhotoLibrary.sharedPhotoLibrary().performChanges({
let request = PHAssetCollectionChangeRequest.creationRequestForAssetCollectionWithTitle(self.albumName)
albumPlaceHolder = request.placeholderForCreatedAssetCollection
}, completionHandler: { (success: Bool, error: NSError!) in
self.albumExists = success
if success {
let collection = PHAssetCollection.fetchAssetCollectionsWithLocalIdentifiers([albumPlaceHolder.localIdentifier], options: nil)
self.assetCollection = collection.firstObject as! PHAssetCollection
if let ac = self.assetCollection {
self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
}
println("\(self.albumName) album made")
}
else {
println("Failed to create \(self.albumName) Album")
}
})
}
}
Error:
'NSInvalidArgumentException', reason: 'Unsupported predicate in fetch options: title == "iFeel"'
For the moment this is a possible solution (in Swift):
let collection: PHFetchResult = PHAssetCollection.fetchAssetCollectionsWithType(.Album, subtype: .Any, options: nil)
for var k = 0; k < collection.count; k++ {
let obj: AnyObject! = collection.objectAtIndex(k)
if obj.title == self.albumName {
self.albumExists = true
self.assetCollection = obj as! PHAssetCollection
if let ac = self.assetCollection {
self.photosAsset = PHAsset.fetchAssetsInAssetCollection(self.assetCollection, options: nil)
}
println("\(self.albumName) album exists")
break
}
}