Ilekroć literał łańcuchowy pojawia się w deklaracji lazy var
pojawia się błąd kompilacji w Swift 2/XCode 7: Cannot convert value of type String to expected argument type '(_builtinStringLiteral: RawPointer, byteSize: Word, isASCII: Int1)' ...
Literały ciągu w leniwych vars w Swift 2/XCode 7 [Nie można przekonwertować wartości typu String ...]
(miałem żadnych problemów w Swift 1.2/XCode 6)
najprostsza linia, która produkuje ten błąd wygląda mniej więcej tak:
lazy var foo = "bar"
ale bardziej relevantly (irytująco), zdarza się, ze inicjalizatorów które pobierają argumenty łańcuchowe :
lazy var viewsLabel = HWLabel(color: COLOR_WHITE, font: ProximaNova("Semibold", 13))
lazy var durationIconView = HWIconView(imageName: "TimeIcon", color: COLOR_WHITE)
Są to oczywiście moje własne inicjalizatory, a ja widząc SDK Apple nie wydaje się mieć ciągi jako args w inicjalizatorów bardzo często. Czy ciągi znaków są złe w praktyce?
Czym jest praca jest zawijanie deklaracji w bloku.
Mogę to zrobić na razie, lub po prostu nie rób tego lazy
.
Wciąż jestem ciekawa. Czy to jest błąd XCode 7?
UPDATE:
Właśnie zauważyłem, że to, co działa to nie owijania deklarację w zamknięciu, lecz określając typ var tak, że nie jest to wywnioskować.
Więc co działa:
lazy var viewsLabel: HWLabel = HWLabel(color: COLOR_WHITE, font: ProximaNova("Semibold", 13))
lazy var durationIconView: HWIconView = HWIconView(imageName: "TimeIcon", color: COLOR_WHITE)
Dlaczego pojawienie się ciąg w lazy var
mes z deklaracji typu wnioskowania jest poza mną. Wciąż masz przeczucie, że może to być błąd XCode 7.
Wydaje się, że wyraźne rodzaj adnotacji pomaga, na przykład 'lazy var foo: String =" bar "'. –
Ha, dzięki @MartinR! Właśnie to zauważyłem i zaktualizowałem moje pytanie. –
Wygląda jak błąd. –