Atualizando Swift 3 para 4, extensão rápida não está mais no objetivo c
Acabei de atualizar um projeto de idioma misto (objetivo-c e Swift) do Swift 3 para o Swift 4.
Tudo parecia correr bem, exceto que todas as minhas extensões Swift não estão mais acessíveis no objetivo-c. Não consigo descobrir como chegarqualquer Extensão rápida para aparecer no objetivo-c. Eu tentei pesquisar, mas não encontro menção de alterações nas extensões no Swift 4, exceto por afrouxar oprivate
escopo.
func
público também.Por exemplo, a seguinte extensão costumava estar disponível para o código objetivo-c quando eu estava usando o Swift 3:
public extension UIAlertController {
class func alert(_ title: String? = nil, message: String? = nil) -> UIAlertController {
return UIAlertController(title: title, message: message, preferredStyle: .alert)
}
@discardableResult func action(_ action: String) -> UIAlertController {
self.addAction(UIAlertAction(title: action, style: .default, handler: nil))
return self
}
@discardableResult func action(_ action: String, style: UIAlertActionStyle = .default, onSelected: ((UIAlertAction) -> Void)? = nil) -> UIAlertController {
self.addAction(UIAlertAction(title: action, style: style, handler: onSelected))
return self
}
@discardableResult func cancel(_ action: String? = "Cancel", onCancel: ((UIAlertAction) -> Void)? = nil) -> UIAlertController {
self.addAction(UIAlertAction(title: action, style: .cancel, handler: { alert in
onCancel?(alert)
}))
return self
}
@discardableResult func destructive(_ action: String, onDestruct: @escaping ((UIAlertAction) -> Void)) -> UIAlertController {
self.addAction(UIAlertAction(title: action, style: .destructive, handler: { action in
onDestruct(action)
}))
return self
}
func presentOn(_ viewController: UIViewController, animated: Bool = true) {
viewController.present(self, animated: animated, completion: nil)
}
}