2015-09-18 18 views
11

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.

+0

Wydaje się, że wyraźne rodzaj adnotacji pomaga, na przykład 'lazy var foo: String =" bar "'. –

+0

Ha, dzięki @MartinR! Właśnie to zauważyłem i zaktualizowałem moje pytanie. –

+0

Wygląda jak błąd. –

Odpowiedz

Powiązane problemy