Mam następujący kod w moim projekcie w Xcode 8.3.3 (Swift 3.1):Swift 4 kompatybilność wsteczną
let font = CGFont(provider!)
CTFontManagerRegisterGraphicsFont(font, &error)
Ale w Xcode 9 Beta (Swift 4), pojawia się następujący błąd:
Value of optional type 'CGFont?' not unwrapped; did you mean to use '!' or '?'?
Błąd polega na tym, że initializer for CGFont, który pobiera CGDataProvider
, teraz zwraca opcjonalne.
Ale kiedy zastosować poprawkę z:
let font = CGFont(provider)
CTFontManagerRegisterGraphicsFont(font!, &error)
kod nie kompiluje w Xcode 8.3.3 z Swift 3.1 od czcionki nie jest opcjonalny, a zatem nie grać ładnie z !
.
Czy istnieje sposób, aby to działało w obu wersjach Xcode? Czy Swift 4 ma być kompatybilny wstecz (kompilacja z kompilatorem Swift 3)?
Powiedziałbym, że jest to przełomowa zmiana w Core Graphics (inicjator stał się awaryjny), więc nie ma to nic wspólnego z Swift 4. Ale myślę, że można użyć kompilacji warunkowej do obejścia tego problemu. –