1

它不是那么重要,但是如果我像这里一样使用 NSDataDetector并将其用于网络链接,我可以显示所有带有 .com、.us 甚至 .ca 的网站,但不适用于 .io 如果我使用http://website.io它是工作,但如果文本是 website.io 它不工作。

有人有办法让它工作吗?

如果您需要,可以在 Playground 中使用示例代码:

var string = "website.io is not ok but website.com is ok"
var error: NSError?
let detector = NSDataDetector(types: NSTextCheckingType.Link.rawValue, error: &error)
detector?.enumerateMatchesInString(string, options: nil, range: NSMakeRange(0, (string as NSString).length)) { (result, flags, _) in
    println(result)
    println(flags)
}

输出是 website.com {25,11}

缺少 website.io {0, 10}

编辑:

它不是用维基英语写的,而是用我的语言写的,有一些“自满”域,如 .ad .am .cd .co .io .me .mu .nu .tv .je .sr

我只是尝试,只有 .me 有效。对于这个“静止”的顶级域,这是 Apple 的限制吗?

4

2 回答 2

2

随时向 Apple 提交错误。但是我认为它是故意省略的,因为“io”在意大利语中的意思是我,有些人在完成句子时没有在点后包含空格。因此,如果添加了 .io,您会检测到“buon giorno.io non lo so”作为链接(不是)。包括 http:// 或 <> 之类的其他标记将强制检测。

于 2015-05-13T19:57:39.723 回答
2

NSDataDetector由于未公开的原因,某些 TLD 未被 检测到(尽管 Deniau 先生的猜测似乎是合理的。)

一种常见的解决方法是使用twitter-text-objc,它将检测所有 TLD。调用[TwitterText URLsInText:]以获取匹配 URL 的数组。您可以使用这些range返回的来创建链接等。

于 2015-05-13T20:02:38.480 回答