Сначала очень ценю вашу помощь. Я только что обновил Xcode вчера, который содержит быстрый 2.2. Я столкнулся с несколькими проблемами, но я быстро их исправил, следуя "тем, что нового в быстрых 2.2", от Natashatherobot. Но есть одна проблема, которую я не могу исправить. Это о неудачных инициализаторах UIFont, которые были введены в быстрой 2.2. Приложен простой фрагмент кода, который будет сообщать об ошибке в swift 2.2. Он может не сообщать об ошибке немедленно, пока я не очистил проект.
lazy var somelabel: UILabel = {
let label = UILabel()
let font = UIFont(name: "somefont", size: 10) ?? UIFont.systemFontOfSize(10) //this line gave me error
label.font = font
label.text = "Calculating..."
return label
}()
Ошибка: (name: String, size: CGFloat) → UIFont 'не конвертируется в' (name: String, size: CGFloat) → UIFont? '
Я могу исправить это двумя способами:
Способ 1: не помещайте эту строку:
let font = UIFont(name: "somefont", size: 10) ?? UIFont.systemFontOfSize(10)
в закрытии "ленивого экземпляра". (Положите его в вычисленные свойства, сообщает об ошибке)
Способ 2: вместо использования:
UIFont(name: "somefont", size: 10)
используйте ниже (но я не думаю, что это должен быть правильный подход, потому что он делает инициализатор более "objc" ):
UIFont.init(name: "somefont", size: 10)
Но я до сих пор не понимаю, почему это сообщит мне об ошибке в закрытии закрытой собственности. Я буду очень признателен, если кто-нибудь может дать мне несколько объяснений.