不能下标类型的值' [NSAttributedStringKey:Any]'索引类型'字符串'

时间:2018-01-17 09:40:48

标签: ios swift swift4 nsattributedstring

我正在更新我在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'" enter image description here

我搜索了具有相同关键字的解决方案,但没有得到任何结果。

任何帮助或建议都会有所帮助。

1 个答案:

答案 0 :(得分:2)

在Swift 4中 - NSAttributedString表示已更改。

类型不再是[String: AnyObject]。其[NSAttributedStringKey:Any]

所以你的属性应该像这样访问:

if let attrs = attributes[NSAttributedStringKey.init("YYTextHighlight")] as? YYTextHighlight