我正在更新我在Swift 4.0中的源代码我面临与属性文本相关的问题
以下代码在swift 3.2中运行良好。
entemessageText.highlightTapAction = { (containerView: UIView, text: NSAttributedString, range: NSRange, rect: CGRect) -> () in
let attributes = text.attributes(at: range.location, effectiveRange: nil)
if let attrs = attributes["YYTextHighlight"] as? YYTextHighlight {
if let url = attrs.userInfo!["url"] as? String {
self.openUrl(URL(string: url)!)
}
}
}
"不能下标类型的值' [NSAttributedStringKey:Any]'索引类型为' String'"
我搜索了具有相同关键字的解决方案,但没有得到任何结果。
任何帮助或建议都会有所帮助。
答案 0 :(得分:2)
在Swift 4中 - NSAttributedString表示已更改。
类型不再是[String: AnyObject]
。其[NSAttributedStringKey:Any]
所以你的属性应该像这样访问:
if let attrs = attributes[NSAttributedStringKey.init("YYTextHighlight")] as? YYTextHighlight