下面这段代码过去在Xcode 6 beta 5中工作得很好:
func fitText(){
let size = (self.text as NSString).sizeWithAttributes([NSFontAttributeName:self.font]) //Errors here
self.frame.size = size
}
现在,它在第二行中给出了以下错误:
'UIFont‘不是'NSDictionary’的一个子类型 无法将表达式的类型“$T6”转换为键入“UIFont”
当我把它分成
let dict = [NSFontAttributeName:self.font]
let size = (self.text as NSString).sizeWithAttributes(dict) //Even stranger errors go here
xcode说:
'UIFont‘不是'NSDictionary’的一个子类型 无法将表达式的类型“NSString:UIFont”转换为键入“CGSize”
在beta 7或6中,什么改变了它破坏了代码?
发布于 2014-09-05 13:47:07
在beta 7中,通过将隐式展开选项转换为显式选项,一些具有可选和可选属性的方法签名已经修复。
在您的例子中,我假定text
属性被声明为String!
(隐式解包装),而现在它是一个String?
。因此,您必须打开它,或者隐式地:
let size = self.text!.sizeWithAttributes(dict)
或者更好地使用可选绑定:
if let text = self.text {
let size = text.sizeWithAttributes(dict)
}
发布于 2014-09-05 13:49:22
您的fitText
函数对我来说工作得很好。
如果有帮助,以下是我在安装Xcode6-beta之后第一次运行新版本时通常会做的一些事情:
https://stackoverflow.com/questions/25687269
复制相似问题