Swift — Инициализатор для условной привязки должен иметь необязательный тип, а не «PHFetchResult‹PHAsset›»

После обновления Xcode до 12.3 я получаю сообщение об ошибке Инициализатор для условной привязки должен иметь необязательный тип, а не «PHFetchResult», он работал раньше, как и ожидалось в предыдущих версиях.

func fetchRecentPhotos() {
    
    if !self.recentImagesArray.isEmpty{return}
    DispatchQueue.global(qos: .default).async {
        let fetchOptions = PHFetchOptions()
        fetchOptions.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: false)]
        
        if let fetchResult : PHFetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions){
            if fetchResult.count > 0 {
                self.recentImagesArray.removeAll()
                for i in 0..<fetchResult.count {
                    let asset =  fetchResult.object(at: i)
                    self.recentImagesArray.append(RecentImage(asset: asset))
                }
                DispatchQueue.main.async {
                    if !self.isVideoStarted{
                        self.recentImagesCollectionView.reloadData()
                        self.recentMediaCollectionHeight.constant = 100
                        print("\(Date())fetchRecentPhotos ===== done")
                        if !self.isMultipleSelection{
                            self.setupGesturesForCameraSelection()
                        }
                        UIView.animate(withDuration: 0.2, animations: {
                            self.view.layoutIfNeeded()
                        })
                    }
                }
            }else{
                print("you got no photos")
            }
        }
    }
    }

есть кто решил проблему?

введите здесь описание изображения


person Coder    schedule 29.01.2021    source источник
comment
не является обязательным, вы можете напрямую использовать let fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)   -  person Anbu.Karthik    schedule 29.01.2021
comment
Благодарю. то, что я пробовал и работает сейчас.   -  person Coder    schedule 29.01.2021


Ответы (1)


Ознакомьтесь с документацией: fetchAssets возвращает не- необязательно, поэтому вы не должны использовать if let.

Заменять

if let fetchResult : PHFetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions){ ... }

с

let fetchResult = PHAsset.fetchAssets(with: .image, options: fetchOptions)
person vadian    schedule 29.01.2021