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
}
コンパイラは、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
}
absoluteString
はオプションの値ではなく、単なる文字列です。 URL変数がnilかどうかを確認できます
if let url = yourURLVariable {
// do your textView function
} else {
// handle nil url
}