Ios 获取属性化字符串中具有url属性的字符串数

Ios 获取属性化字符串中具有url属性的字符串数,ios,cocoa-touch,nsattributedstring,Ios,Cocoa Touch,Nsattributedstring,我试图在属性字符串中查找具有url属性的字符串数。例如,我有这样一句话:@你好,我叫迈克尔 name是一个带有url属性的字符串,如{url:www.google.com} 我想在我的属性字符串中找到带有URL的字符串数。 我试图在字符串上使用enumerateAttributes,但这只返回应用于整个字符串的属性。当我打印出字符串时,我可以清楚地看到有具有此属性的字符串。我如何访问它们 你很接近了。为此,您可以使用enumerateAttribute_u10;:in:options:using

我试图在属性字符串中查找具有url属性的字符串数。例如,我有这样一句话:@你好,我叫迈克尔

name是一个带有url属性的字符串,如{url:www.google.com}

我想在我的属性字符串中找到带有URL的字符串数。
我试图在字符串上使用enumerateAttributes,但这只返回应用于整个字符串的属性。当我打印出字符串时,我可以清楚地看到有具有此属性的字符串。我如何访问它们

你很接近了。为此,您可以使用enumerateAttribute_u10;:in:options:using:method。您在case.link中传入您感兴趣的属性,它使用字符串的每个子范围以及属性的范围和值调用闭包。这包括不具有该属性的子范围。在这种情况下,传递值为nil。因此,要计算字符串中的链接,请计算非nil属性:

func linksIn(_ attributedString: NSAttributedString) -> Int {
  var count = 0
  attributedString.enumerateAttribute(.link, in: NSRange(location: 0, length: attributedString.length), options: []) { attribute, _, _ in
    if attribute != nil {
        count += 1
    }
  }
  return count
}

啊,是的,我自己想出来的,但这是我用的正确答案