条件绑定的iOS初始值设定项必须具有可选类型,而不是';CGFont';?

条件绑定的iOS初始值设定项必须具有可选类型,而不是';CGFont';?,ios,objective-c,swift2.3,Ios,Objective C,Swift2.3,当我将Uber SDK集成到我的项目中时,我在swift 2.3中遇到了这个错误,但我不知道如何修复这个错误 class FontUtil { static func loadFontWithName(name: String, familyName: String) -> Bool { if let path = NSBundle(forClass: FontUtil.self).pathForResource(name, ofType: "otf") { if

当我将Uber SDK集成到我的项目中时,我在swift 2.3中遇到了这个错误,但我不知道如何修复这个错误

class FontUtil {
static func loadFontWithName(name: String, familyName: String) -> Bool {
    if let path = NSBundle(forClass: FontUtil.self).pathForResource(name, ofType: "otf") {
        if let inData = NSData(contentsOfFile: path) {
            var error: Unmanaged<CFError>?
            let cfdata = CFDataCreate(nil, UnsafePointer<UInt8>(inData.bytes), inData.length)
            if let provider = CGDataProviderCreateWithCFData(cfdata) {
                if let font = CGFontCreateWithDataProvider(provider) ---> Error found in this line {
                    if (CTFontManagerRegisterGraphicsFont(font, &error)) {
                        return true
                    }
                    print("Failed to load font with error: \(error)")
                }
            }
        }
    }
    return false
}}
类FontUtil{
静态func loadFontWithName(名称:String,家庭名称:String)->Bool{
如果let path=NSBundle(forClass:FontUtil.self).pathForResource(名称,类型:“otf”){
如果让inData=NSData(contentsOfFile:path){
var错误:非托管?
让cfdata=CFDataCreate(nil,UnsafePointer(inData.bytes),inData.length)
如果let provider=CGDataProviderCreateWithCFData(cfdata){
如果let font=CGFontCreateWithDataProvider(provider)--->则在此行中发现错误{
如果(CTFontManagerRegisterGraphicsFont(字体和错误)){
返回真值
}
打印(“加载字体失败,错误:\(错误)”)
}
}
}
}
返回错误
}}

正如Eric所说,
CGFontCreateWithDataProvider
函数不再返回
可选的
值,因此您不需要将此语句和后续调用包装在
if
可选绑定中。您的代码将更改为:

let font=CGFontCreateWithDataProvider(provider)
如果(CTFontManagerRegisterGraphicsFont(字体和错误)){
返回真值
}
打印(“加载字体失败,错误:\(错误)”)

您在标题中的错误消息中给出了解决方案。:)提示:在以前的Swift版本中返回可选项的东西现在不再返回可选项。。。