它不是那么重要,但如果我使用像here这样的NSDataDetector并将其用于weblink,我可以使用.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的限制吗?
答案 0 :(得分:1)
随意向Apple提交错误。但是我认为它是故意省略的,因为" io"意思是我意大利语,有些人在完成一个句子后没有在点后面加一个空格。因此,如果.io被添加,你就会发现" buon giorno.io非如此"作为一个链接(它不是)。包括http://或其他标记,例如<>将迫使检测。
答案 1 :(得分:1)
NSDataDetector
未检测到某些TLD,原因尚未公开(尽管Deniau先生的猜测似乎有道理。)
常见的解决方法是使用twitter-text-objc,它将检测所有TLD。调用[TwitterText URLsInText:]
以获取匹配网址数组。您可以使用这些返回的range
来创建链接等。