我有我在Xcode 8.3.3(雨燕3.1)項目下面的代碼:斯威夫特4向後兼容性
let font = CGFont(provider!)
CTFontManagerRegisterGraphicsFont(font, &error)
但在Xcode 9 Beta版(斯威夫特4),我收到以下錯誤:
Value of optional type 'CGFont?' not unwrapped; did you mean to use '!' or '?'?
錯誤是因爲現在需要CGDataProvider
的initializer for CGFont返回一個可選項。
但是當我申請的修復:
let font = CGFont(provider)
CTFontManagerRegisterGraphicsFont(font!, &error)
的代碼在Xcode 8.3.3不再編譯與雨燕3.1,因爲字體是不可選的,因此不與!
發揮很好。
有沒有辦法讓這兩個版本的Xcode工作? Swift 4是否應該向後兼容(使用Swift 3編譯器編譯)?
我想說這是Core Graphics中的一個突破性的變化(初始化器已經成爲failable),所以它與Swift 4無關。但我認爲你可以使用條件編譯來解決這個問題。 –