Обнаружение URL в тексте в формате HTTPS - PullRequest
0 голосов
/ 28 ноября 2018

Вот мой код для определения URL в тексте

let detector: NSDataDetector = try NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
let matches: [NSTextCheckingResult] = detector.matches(in: message!, options: NSRegularExpression.MatchingOptions.init(rawValue: 0), range: NSMakeRange(0, (message?.count)!))
var url: URL?
for item in matches {
    let match = item as NSTextCheckingResult
    url = match.url
    print(url!)
    break
}

Однако этот код делает www.example.com как http://example.com

Что я хочу, так этополучить этот URL как HTTPS, например https://example.com

Как мне этого добиться?

1 Ответ

0 голосов
/ 28 ноября 2018

Нет API, который бы указывал NSDataDetector по умолчанию на https схемы URL, когда он находит URL без схемы.

Один из вариантов - обновить полученный URL самостоятельно:

let message = "www.example.com"
let detector = try NSDataDetector(types: NSTextCheckingResult.CheckingType.link.rawValue)
let matches = detector.matches(in: message, range: NSRange(location: 0, length: message.utf16.count))
var url: URL?
for match in matches {
    if match.resultType == .link {
        url = match.url
        if url?.scheme == "http" {
            if var urlComps = URLComponents(url: url!, resolvingAgainstBaseURL: false) {
                urlComps.scheme = "https"
                url = urlComps.url
            }
        }
        print(url)
        break
    }
}
...