将属性转换为 URL / NSURL
Convert attribute to URL / NSURL
我正在开发一个由 NSAttributedString
填充的 UITextView
。
我使用以下代码从属性字符串中提取 URL:
if let attribute = self.textStorage.attribute(NSAttributedString.Key.link, at: characterIndex, effectiveRange: nil){
let url = URL(string: (attribute as AnyObject).debugDescription ?? "");
print("URL: \(url.absoluteString)");
}
这似乎不是获取 URL
的有效方法,因为我正在将属性转换为其调试描述,然后使用它来初始化新的 URL
。
是否有更多 "official" 方法从属性中获取 URL
?
我在将 .link
值转换为 String
或 URL
时从未遇到过问题,如下所示:
if let urlString = (attribute as? String) ?? (attribute as? URL)?.absoluteString {
print("URL: \(urlString)")
// URL from string
let url = URL(string: urlString)
}
我过去在将 .link
值单独转换为 String
时遇到了一些问题,这里在我的 post @RasheshBosamiya 评论中也遇到了这个问题,而且似乎值NSAttributedString.Key.link
可以是 URL
或 String
,具体取决于设置的 what/how。
我正在开发一个由 NSAttributedString
填充的 UITextView
。
我使用以下代码从属性字符串中提取 URL:
if let attribute = self.textStorage.attribute(NSAttributedString.Key.link, at: characterIndex, effectiveRange: nil){
let url = URL(string: (attribute as AnyObject).debugDescription ?? "");
print("URL: \(url.absoluteString)");
}
这似乎不是获取 URL
的有效方法,因为我正在将属性转换为其调试描述,然后使用它来初始化新的 URL
。
是否有更多 "official" 方法从属性中获取 URL
?
我在将 .link
值转换为 String
或 URL
时从未遇到过问题,如下所示:
if let urlString = (attribute as? String) ?? (attribute as? URL)?.absoluteString {
print("URL: \(urlString)")
// URL from string
let url = URL(string: urlString)
}
我过去在将 .link
值单独转换为 String
时遇到了一些问题,这里在我的 post @RasheshBosamiya 评论中也遇到了这个问题,而且似乎值NSAttributedString.Key.link
可以是 URL
或 String
,具体取决于设置的 what/how。