Actualización de Swift 3 a 4, la extensión Swift ya no está en el objetivo c
Acabo de terminar de actualizar un proyecto de lenguaje mixto (Objective-C y Swift) de Swift 3 a Swift 4.
Todo parecía ir bien, excepto que todas mis extensiones Swift ya no son accesibles en el objetivo-c. No puedo entender cómo llegaralguna Extensión rápida para aparecer en el objetivo-c. He intentado buscar, pero no puedo encontrar ninguna mención de los cambios en las extensiones en Swift 4, excepto para aflojar elprivate
alcance.
func
público también.Por ejemplo, la siguiente extensión solía estar disponible para el código de Objective-C cuando estaba usando 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)
}
}