ошибка: невозможно преобразовать значение типа '(_) -> () в ожидаемый тип аргумента' (() -> Void)? ' - PullRequest
0 голосов
/ 12 марта 2019

Я недавно мигрировал с swift3 на swift 4.2 .Теперь при построении я получаю следующую ошибку:

Невозможно преобразовать значение типа '(_) -> ()' в ожидаемый тип аргумента '(() -> Void)?'

и ошибка появляется в следующей строке кода:

topWindow.rootViewController?.present(alert, animated: true, completion: { _ in })

Я не совсем уверен, как решить эту ошибку.Буду признателен за любую оказанную помощь

    let topWindow = UIWindow(frame: UIScreen.main.bounds)

    topWindow.rootViewController = UIViewController()
    topWindow.windowLevel = UIWindow.Level.alert + 1
    //let storyboard = UIStoryboard(name: "Main", bundle: nil)
   // let topViewController = storyboard.instantiateViewController(withIdentifier: identifier) as? BaseViewController
    let alert = UIAlertController(title: "iPanel", message: t_alert, preferredStyle: .alert)
    let yesButton = UIAlertAction(title: get_error(eng_error: "open"), style: .default, handler: {(_ action: UIAlertAction) -> Void in
        print("you pressed Yes, please button")
        //topWindow.isHidden = true
        //trying to fix reject 154 sending user to survey from push when app is in forground
        //take user to controller
        DispatchQueue.main.async {
            let storyboard = UIStoryboard(name: "Main", bundle: nil)
            let vc = storyboard.instantiateViewController(withIdentifier: "ccontroller") as! UINavigationController
            topWindow.rootViewController?.present(vc, animated: true, completion: nil)
        }
    })

    let noButton = UIAlertAction(title: get_error(eng_error: "ignore"), style: .default, handler: {(_ action: UIAlertAction) -> Void in
        print("you pressed No, thanks button")
        topWindow.isHidden = true
    })

    alert.addAction(noButton)
    alert.addAction(yesButton)

    topWindow.makeKeyAndVisible()
    topWindow.rootViewController?.present(alert, animated: true, completion: { _ in })
}

Ответы [ 2 ]

4 голосов
/ 12 марта 2019

Вам не нужно заполнять completion параметр, так как этот параметр имеет значение по умолчанию , которое равно nil

topWindow.rootViewController?.present(alert, animated: true)

В любом случае, если вы хотите объявитьcompletion, вам не нужно _ in, поскольку completion не принимает никаких параметров

topWindow.rootViewController?.present(alert, animated: true, completion: { })

или просто

topWindow.rootViewController?.present(alert, animated: true) { }
0 голосов
/ 12 марта 2019

Компиляция в последней строке должна быть нулевой - ошибка об этом.

topWindow.rootViewController?.present(alert, animated: true, completion: nil)
...