Swift - FetchRequest для пользовательского альбома и установите для ImageView Image
Моя цель - извлечь PHAssets из альбома под названием "Nice", добавить ресурсы в массив "niceUserImage" и, наконец, установить первое изображение в массиве в imageView.image. К сожалению, когда я запускаю приложение и запускаю функцию с помощью кнопки, мое приложение перестает работать при
let allPhotos = PHAsset.fetchAssets(in: self.assetCollection, options: fetchOptions)
Ошибка "Неподдерживаемый предикат в параметрах выборки: title == "Nice"".
Я определенно создаю папку "Nice" в приложении, прежде чем активировать вышеупомянутую функцию... Я знаю, потому что я вижу, что она появляется в моей библиотеке фотографий с изображением после ее создания.
Может кто-нибудь помочь направить меня в правильном направлении, пожалуйста? СПАСИБО!
class A {
var niceUserImage = [PHAsset]()
var albumFound : Bool = false
var assetCollection: PHAssetCollection = PHAssetCollection()
var photoAssets = PHFetchResult<AnyObject>()
func FetchNiceCustomAlbumPhotos()
{
albumName = "Nice"
PHPhotoLibrary.requestAuthorization { (status) in
switch status
{
case .authorized:
print("Good to proceed")
let fetchOptions = PHFetchOptions()
fetchOptions.predicate = NSPredicate(format: "title = %@", albumName)
let collection: PHFetchResult = PHAssetCollection.fetchAssetCollections(with: .album, subtype: .any, options: fetchOptions)
if let first_Obj:AnyObject = collection.firstObject{
//found the album
self.albumFound = true
self.assetCollection = first_Obj as! PHAssetCollection
let allPhotos = PHAsset.fetchAssets(in: self.assetCollection, options: fetchOptions)
print(allPhotos.count)
allPhotos.enumerateObjects({ (object, count, stop) in
self.niceUserImage.append(object)
})
print("Found \(allPhotos.count) images")
} else {
self.albumFound = false
}
case .denied, .restricted:
print("Not allowed")
case .notDetermined:
print("Not determined yet")
}
if self.albumFound == false {
//alert the user
self.imageView.image = #imageLiteral
} else {
self.imageView.image = self.convertImageFromAsset(asset: self.niceUserImage[0])
}
}
}
}
Проведя слишком много часов, работая над этим, я нашел решение. Это потому, что я вызывал fetchOptions во второй раз, когда мне это не нужно. Итак, просто установите второй параметр на ноль, например, так:
let allPhotos = PHAsset.fetchAssets(in: self.assetCollection, options: nil)
И вуаля, проблема решена:)