这不是很重要,但是如果我像NSDataDetector一样使用这里并使用它进行网页链接,我可以用.com、.us甚至.ca显示所有的网站,但是如果我使用http://website.io,它是工作的,但是如果文本是website.io,它就不起作用了。
有人有办法让它起作用吗?
如果需要的话,在游乐场工作的示例代码:
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}
编辑:
它不是写在wiki英语上,而是在我的语言上,有一些“自满”领域,如.ad .am .cd .co .io .me .mu .nu .tv .je .sr。
我只是试着,只有.me才能工作。这是苹果对这个“仍然”顶级域名的限制吗?
发布于 2015-05-13 19:57:39
请随时向苹果公司提交一个bug。然而,我认为它是故意省略的,因为"io“在意大利语中是指我,而有些人在完成句子时没有在圆点后面加上空格。因此,如果添加了.io,就会检测到"buon giorno.io non so“作为链接(不是)。包括http://或另一个标记(如<> )将强制检测。
发布于 2015-05-13 20:02:38
一些TLDs没有被NSDataDetector检测到,原因不明(尽管Deniau的猜测似乎是可信的)。
一个常见的解决方法是使用twitter-text-objc,它将检测所有的TLD。调用[TwitterText URLsInText:]以获得一个匹配URL数组。您可以使用这些返回的range来创建链接等。
https://stackoverflow.com/questions/30218034
复制相似问题