Всякий раз, когда в объявлении lazy var
появляется строковый литерал, я получаю ошибку компиляции в Swift 2/XCode 7: Cannot convert value of type String to expected argument type '(_builtinStringLiteral: RawPointer, byteSize: Word, isASCII: Int1)' ...
(у меня не было проблем в Swift 1.2/XCode 6)
Простейшая строка, создающая эту ошибку, выглядит примерно так:
lazy var foo = "bar"
Но более релевантно (досадно), это также происходит с инициализаторами, которые принимают строковые аргументы:
lazy var viewsLabel = HWLabel(color: COLOR_WHITE, font: ProximaNova("Semibold", 13))
lazy var durationIconView = HWIconView(imageName: "TimeIcon", color: COLOR_WHITE)
Это, очевидно, мои собственные инициализаторы, и я замечаю, что Apple SDK не очень часто имеют строки в качестве аргументов в инициализаторах. Строки в init
плохой практике?
Что делает обертка объявления в блоке.
Я могу сделать это сейчас или просто сделать их не lazy
.
Мне все еще интересно. Является ли это ошибкой XCode 7?
UPDATE:
Только что заметил, что работа не завершает объявление в закрытии, а скорее указывает тип var, чтобы он не выводился.
Итак, , что работает:
lazy var viewsLabel: HWLabel = HWLabel(color: COLOR_WHITE, font: ProximaNova("Semibold", 13))
lazy var durationIconView: HWIconView = HWIconView(imageName: "TimeIcon", color: COLOR_WHITE)
Почему появление строки в манифестах объявлений lazy var
с выводами типа вне меня. По-прежнему есть подозрение, что это может быть ошибка XCode 7.