2016-12-03 82 views
1

当我将Uber SDK集成到我的项目中时,我在swift 2.3中遇到了这个错误,但我不知道要解决这个问题。条件绑定的iOS初始化程序必须具有可选类型,而不是'CGFont'?

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 
}} 
+1

解决方法是在您放入标题的错误消息中给出的。 :)提示:在之前的Swift版本中返回一个Optional的东西现在不再返回Optional了... – Moritz

回答

1

正如埃里克说,该CGFontCreateWithDataProvider功能不再返回一个Optional值,这样你就不会需要包装这一说法,并在if可选绑定的后续调用。您的代码将更改为:

let font = CGFontCreateWithDataProvider(provider) 
if (CTFontManagerRegisterGraphicsFont(font, &error)) { 
    return true 
} 
print("Failed to load font with error: \(error)") 
+0

感谢您的回答。@kgaleman –

相关问题