from - use alamofire in swift 4
El inicializador para el enlace condicional debe tener un tipo opcional, no ''String'' (2)
El compilador le está diciendo que no puede usar un if let
porque es totalmente innecesario. No tiene opciones para desempaquetar: la URL
no es opcional, y la propiedad absoluteString
tampoco es opcional. if let
se usa exclusivamente para desenvolver opcionales. Si quieres crear una nueva constante llamada url
, hazlo:
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
let url = URL.absoluteString
if #available(iOS 8.0, *) {
VPMainViewController.showCompanyMessageWebView(url)
}
return false
}
Sin embargo, la nota al margen: tener un parámetro llamado URL
y una constante local llamada url
es muy confuso. Usted podría estar mejor así:
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
if #available(iOS 8.0, *) {
VPMainViewController.showCompanyMessageWebView(URL.absoluteString)
}
return false
}
Este es un tema divertido que estoy encontrando después de actualizar a Swift 2.0
El error está en la línea if let url = URL.absoluteString
func myFormatCompanyMessageText(attributedString: NSMutableAttributedString) -> NSMutableAttributedString
{
// Define text font
attributedString.addAttribute(NSFontAttributeName, value: UIFont(name: "Montserrat-Light", size: 17)!, range: NSMakeRange(0, attributedString.length))
return attributedString
}
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
if let url = URL.absoluteString {
if #available(iOS 8.0, *) {
VPMainViewController.showCompanyMessageWebView(url)
}
}
return false
}
absoluteString
no es un valor opcional, es solo una cadena. Puedes comprobar si la variable de URL es nula.
if let url = yourURLVariable {
// do your textView function
} else {
// handle nil url
}