这是我在更新到Swift 2.0
错误发生在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
}
答案 0 :(得分:46)
编译器告诉您不能使用if let
,因为它完全没必要。您没有任何可选项解包:URL
不是可选项,absoluteString
属性也不是可选项。 if let
专门用于解包选项。如果要创建名为url
的新常量,请执行以下操作:
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
}
然而,旁注:拥有一个名为URL
的参数和一个名为url
的局部常量非常令人困惑。你可能会更喜欢这样:
func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
if #available(iOS 8.0, *) {
VPMainViewController.showCompanyMessageWebView(URL.absoluteString)
}
return false
}
答案 1 :(得分:0)
absoluteString
不是一个可选值,它只是一个字符串。您可以检查URL变量是否为nil
if let url = yourURLVariable {
// do your textView function
} else {
// handle nil url
}