条件绑定的iOS初始化程序必须具有可选类型,而不是'CGFont'?
问题描述:
当我将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
}}
答
正如埃里克说,该CGFontCreateWithDataProvider
功能不再返回一个Optional
值,这样你就不会需要包装这一说法,并在if
可选绑定的后续调用。您的代码将更改为:
let font = CGFontCreateWithDataProvider(provider)
if (CTFontManagerRegisterGraphicsFont(font, &error)) {
return true
}
print("Failed to load font with error: \(error)")
+0
感谢您的回答。@kgaleman –
解决方法是在您放入标题的错误消息中给出的。 :)提示:在之前的Swift版本中返回一个Optional的东西现在不再返回Optional了... – Moritz