NSDataDetector找不到.io网站

时间:2015-05-13 14:35:34

标签: swift nsdatadetector

它不是那么重要,但如果我使用像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的限制吗?

2 个答案:

答案 0 :(得分:1)

随意向Apple提交错误。但是我认为它是故意省略的,因为" io"意思是我意大利语,有些人在完成一个句子后没有在点后面加一个空格。因此,如果.io被添加,你就会发现" buon giorno.io非如此"作为一个链接(它不是)。包括http://或其他标记,例如<>将迫使检测。

答案 1 :(得分:1)

NSDataDetector未检测到某些TLD,原因尚未公开(尽管Deniau先生的猜测似乎有道理。)

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