Не удается преобразовать значение типа 'NSStoryboardSegue.Identifier?'к ожидаемому типу аргумента 'String' - PullRequest
0 голосов
/ 30 мая 2018

Я использую следующий код, чтобы показать контроллер представления, я идентифицирую segue, используя свойство идентификатора. Этот код прекрасно работает в swift3, но при обновлении до swift4 я получаю следующую ошибку

Не удается преобразовать значение типа 'NSStoryboardSegue.Identifier?'к ожидаемому типу аргумента 'String'

override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    if (segue.identifier == "segue") {
        //get a reference to the destination view controller
        let destinationVC:ProgressView = segue.destinationController as! ProgressView

        //set properties on the destination view controller
        destinationVC.fileArray=fileArray
        destinationVC.croptype=croptype
        destinationVC.outdir=outdir
        destinationVC.fileformat=fileformat
        destinationVC.tflag=tflag
        if(resize==true)
        {
        destinationVC.resize=true
        destinationVC.rwidth=rwidth
        destinationVC.rheight=rheight
        destinationVC.preserve_aspect_ratio=preserve_aspect_ratio
        }

    }
}

Пожалуйста, совет

1 Ответ

0 голосов
/ 30 мая 2018

В Swift 4 тип идентификатора segue был изменен на NSStoryboardSegue.Identifier

Два решения

  1. Сравните rawValue - и безопасно разверните идентификатор

    if let identifier = segue.identifier, identifier.rawValue == "segue" { ...
    
  2. (рекомендуется) Создайте расширение

    extension NSStoryboardSegue.Identifier {
        static let segue = NSStoryboardSegue.Identifier("segue")
    }
    

    и сравните

    if let identifier = segue.identifier, identifier == .segue { ...
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...