Tôi có đoạn code sau trong dự án của tôi trong Xcode 8.3.3 (Swift 3.1):Swift 4 tương thích ngược
let font = CGFont(provider!)
CTFontManagerRegisterGraphicsFont(font, &error)
Nhưng trong Xcode 9 Beta (Swift 4), tôi nhận được lỗi sau:
Value of optional type 'CGFont?' not unwrapped; did you mean to use '!' or '?'?
Lỗi là do initializer for CGFont mất CGDataProvider
hiện trả về tùy chọn.
Nhưng khi tôi áp dụng các sửa chữa của:
let font = CGFont(provider)
CTFontManagerRegisterGraphicsFont(font!, &error)
Mã này không còn biên dịch trong Xcode 8.3.3 với Swift 3.1 từ phông chữ không phải là một tùy chọn và do đó không chơi độc đáo với !
.
Có cách nào để thực hiện công việc này trong cả hai phiên bản của Xcode? Swift 4 có phải là tương thích ngược hay không (biên dịch với trình biên dịch Swift 3)?
Tôi muốn nói đây là một thay đổi đột phá trong Core Graphics (initializer đã trở thành failable), vì vậy nó không liên quan gì đến Swift 4. Nhưng tôi nghĩ bạn có thể sử dụng trình biên dịch có điều kiện để giải quyết vấn đề này. –