Как я могу использовать "updateTextAttributes (converHandler :)", который должен вернуть значение - PullRequest
0 голосов
/ 20 января 2020

Есть ли способ присвоить этой константе значение?

 let conversionHandler : ([NSAttributedString.Key : Any]) -> [NSAttributedString.Key : Any] =  ...    
// how can I assign 


    if #available(iOS 13.0, *) {
        textView.updateTextAttributes(conversionHandler: conversionHandler)
    } else {

    }

Ответы [ 2 ]

3 голосов
/ 20 января 2020
Closure expression syntax has the following general form:

{ (parameters) -> return type in
    statements
}

Решение

Синтаксис выражения закрытия

let conversionHandler : ([NSAttributedString.Key : Any]) -> [NSAttributedString.Key: Any] = { dictionary in
    return dictionary
}

Сокращенные имена аргументов

Swift автоматически предоставляет сокращенные имена аргументов для встроенных замыканий, которые можно использовать для ссылки на значения аргументов замыкания по именам $ 0, $ 1, $ 2 и т. Д.

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

let conversionHandler : ([NSAttributedString.Key : Any]) -> [NSAttributedString.Key: Any] = {
    return $0
}

source: https://docs.swift.org/swift-book/LanguageGuide/Closures.html

1 голос
/ 20 января 2020
let conversionHandler : ([NSAttributedString.Key : Any]) -> [NSAttributedString.Key: Any] = {_ in 
             let font = UIFont.systemFont(ofSize: 72)
            let attributes: [NSAttributedString.Key: Any] = [
                .font: font,
                .foregroundColor: UIColor.red,
            ]

            return attributes
        }
...