Невозможно преобразовать значение типа '[String: Any]' в ожидаемый тип аргумента '[NSAttributedStringKey: Any]' - PullRequest
0 голосов
/ 26 апреля 2019

Преобразование моего кода из swift 3 в 4 и получение ошибки Невозможно преобразовать значение типа '[String: Any]' в ожидаемый тип аргумента '[NSAttributedStringKey: Any]'

В сети

attributedString.addAttributes(boldAttributes, range: NSRange(location: index, length: linkType.keyPhrase.count))

с выделенным жирным шрифтом

Вот полный код

    private func addLink(_ linkType: AttributedURLType, attributedString: NSMutableAttributedString) {

        let indeces = attributedString.string.indices(of: linkType.keyPhrase)
        let boldAttributes: [String : Any] = [
            NSAttributedStringKey.font.rawValue: LocalConstants.termsBoldFont,
            NSAttributedStringKey.link.rawValue: linkType.url
        ]

        for index in indeces {
            attributedString.addAttributes(boldAttributes, range: NSRange(location: index, length: linkType.keyPhrase.count))
        }
    }

1 Ответ

3 голосов
/ 26 апреля 2019

Итак, вы инициировали переменную boldAttributes с помощью [String: Any], и ваша ошибка говорит вам, что это не ожидаемый тип переменной.Поэтому инициализация переменной с помощью [NSAttributedString.Key : Any] и удаление .rawValue должны решить вашу проблему.

Ваш словарь атрибутов будет выглядеть так:

let boldAttributes: [NSAttributedString.Key : Any] = [
    .font: LocalConstants.termsBoldFont,
    .link: linkType.url
]
...