Voici un problème amusant que je rencontre après la mise à jour vers Swift 2.0
L'erreur est sur la ligne 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
}
Le compilateur vous dit que vous ne pouvez pas utiliser un if let
car c'est totalement inutile. Vous n'avez pas d'option à décompresser: URL
n'est pas facultatif, et la propriété absoluteString
n'est pas facultative non plus. if let
est utilisé exclusivement pour déballer les options. Si vous voulez créer une nouvelle constante nommée url
, procédez comme suit:
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
}
Cependant, sidenote: avoir un paramètre nommé URL
et une constante locale nommée url
est très déroutant. Vous pourriez être mieux comme ça:
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
if #available(iOS 8.0, *) {
VPMainViewController.showCompanyMessageWebView(URL.absoluteString)
}
return false
}
absoluteString
n'est pas une valeur facultative, c'est juste une chaîne. Vous pouvez vérifier si la variable d'URL est nulle
if let url = yourURLVariable {
// do your textView function
} else {
// handle nil url
}