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)

И вуаля, проблема решена:)

0 ответов

Другие вопросы по тегам