Преобразовать атрибут в URL / NSURL - PullRequest
0 голосов
/ 28 января 2019

Я работаю над UITextView, который заполнен NSAttributedString.

. Я использую следующий код для извлечения URL из приписанной строки:

if let attribute = self.textStorage.attribute(NSAttributedString.Key.link, at: characterIndex, effectiveRange: nil){
    let url = URL(string: (attribute as AnyObject).debugDescription ?? "");
    print("URL: \(url.absoluteString)");
}

Это не похоже на эффективный способ получить URL, потому что я конвертирую атрибут в его описание отладки, а затем использую его для инициализации нового URL.

Есть ли более "официальный"способ получить URL от атрибута?

1 Ответ

0 голосов
/ 28 января 2019

У меня никогда не было проблем при приведении значения .link к String или URL, например так:

if let urlString = (attribute as? String) ?? (attribute as? URL)?.absoluteString {
    print("URL: \(urlString)")

    // URL from string
    let url = URL(string: urlString)
}

В прошлом я сталкивался с некоторыми проблемами, когда приводил только значение .linkна String, здесь, в моем посте @RasheshBosamiya в комментариях также сталкивался с этой проблемой, и, похоже, значение NSAttributedString.Key.link может быть либо URL, либо String в зависимости от того, что / как установлено.

...