Преобразование Swift 3 — функция в списке захвата

#swift3 #capture

#swift3 #захват

Вопрос:

Я пытаюсь преобразовать проект из Swift 2.3 в Swift 3. Код перед преобразователем был:

Код в Swift 2.3

 ..., handler: { [performSegueWithIdentifier] _ in
    performSegueWithIdentifier("Help Segue", sender: nil)
}
 

После преобразования в Swift 3.0 код становится:

 ..., handler: { [performSegue(withIdentifier:sender:)] _ in
    performSegueWithIdentifier("Help Segue", sender: nil)
}
 

Но у меня ошибка компиляции:

 'Expected 'weak', 'unowned', or no specifier in capture list'
 

Что я пробовал:

  • удалите параметры, но кажется, что Expression type 'Void' (aka '()') is ambiguous without more context .

Ответ №1:

Ошибка: ‘Тип выражения ‘Void’ …’ относится ко второй строке:

performSegue(withIdenfifier: "Help Segue", sender: nil)

Итак, все станет:

 handler: { [performSegue] _ in
    performSegue("Help Segue", nil)
})