Сбой приложения MLTranslation при загрузке MLModals в swift iOS

# #ios #swift #xcode #firebase

Вопрос:

Привет, мое приложение выходит из строя, когда я запускаю функцию englishTranslator.downloadModelIfNeeded , она выходит из строя только в том случае, если я вставляю englishTranslator.translate(resultText) ее или под ней. Приложение работает, если я удаляю один из них, но оно не переводит текст. Вот мой полный код:

 
import UIKit
import Firebase

class ViewController: UIViewController, UIImagePickerControllerDelegate amp; UINavigationControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()
        label.frame = view.frame
        DispatchQueue.main.asyncAfter(deadline: .now()   1) {
            let vc = UIImagePickerController()
            vc.sourceType = .camera
            vc.allowsEditing = true
            vc.delegate = self
            self.present(vc, animated: true)
        }
        view.addSubview(label)
    }
    
    private var label: UILabel = {
        let label = UILabel()
        label.font = UIFont(name: "ArialMT", size: 25)
        label.text = "Detected Text Here"
        label.numberOfLines = 0
        label.lineBreakMode = .byWordWrapping
        label.textAlignment = .center
        return label
    }()

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        picker.dismiss(animated: true)

        guard let image = info[.editedImage] as? UIImage else {
            print("No image found")
            return
        }
        let vision = Vision.vision()
        let textRecognizer = vision.onDeviceTextRecognizer()
        let image2 = VisionImage(image: image)
        textRecognizer.process(image2) { result, error in
          guard error == nil, let result = result else {
            return
          }

            let resultText = result.text
            DispatchQueue.main.async {
                self.label.text = "(resultText)"
            }
            print(resultText)
            let options = LanguageIdentificationOptions(confidenceThreshold: 0.4)
            let languageId = NaturalLanguage.naturalLanguage().languageIdentification(options: options)

            languageId.identifyLanguage(for: resultText) { (languageCode, error) in
              if let error = error {
                print("Failed with error: (error)")
                return
              }
              if let languageCode = languageCode, languageCode != "und" {
                print("Identified Language: (languageCode)")
                let options3 = TranslatorOptions(sourceLanguage: .fromLanguageCode(languageCode), targetLanguage: .en)
                let englishTranslator = NaturalLanguage.naturalLanguage().translator(options: options3)
                let conditions = ModelDownloadConditions(
                    allowsCellularAccess: false,
                    allowsBackgroundDownloading: true
                )
                englishTranslator.downloadModelIfNeeded(with: conditions) { error in
                    guard error == nil else { return }
                    
                }
                englishTranslator.translate(resultText) { translatedText, error in
                            guard error == nil, let translatedText = translatedText else { return }
                            DispatchQueue.main.async {
                                self.label.text = translatedText
                            }
                        }
                
                
              } else {
                print("No language was identified")
              }
            
           

               
                
                
            }
        }
            
    }
}