我在 Xcode 8.3.3 (Swift 3.1) 的项目中有以下代码:
let font = CGFont(provider!)
CTFontManagerRegisterGraphicsFont(font, &error)
但在 Xcode 9 Beta (Swift 4) 中,我收到以下错误:
可选类型“CGFont?”的值 未拆封;你的意思是用'!' 或者 '?'?
该错误是因为CGFont 的初始值设定项现在CGDataProvider
返回一个可选值。
但是当我应用以下修复时:
let font = CGFont(provider)
CTFontManagerRegisterGraphicsFont(font!, &error)
该代码不再在 Xcode 8.3.3 和 Swift 3.1 中编译,因为字体不是可选的,因此不能很好地与!
.
有没有办法在两个版本的 Xcode 中都可以做到这一点?Swift 4 是否应该向后兼容(使用 Swift 3 编译器编译)?