XCode 6.1 NSString.boundingRectWithSize编译错误

时间:2014-10-21 14:56:48

标签: ios xcode swift

在我将Xcode更新为6.1后,我的现有项目出现了一些编译器错误。

我定义了像

这样的属性
let styleAttriutes = [
  NSFontAttributeName : UIFont(...),
  NSForgeroundColorAttributeName : UIColor.blackColor()
]

错误:"无法找到' init'接受提供的参数"

所以我声明推断词典显式添加:[NSString:Any] ,因为所有键常量都是NSString类型,我们有不同的值:UIFont / { <1}}和UIColor也是不允许的。

AnyObject

现在编译器很高兴。

定义的属性用于

let styleAttriutes : [NSString : Any] = [ ...

由于text.boundingRectWithSize(size: CGSize, options: NSStringDrawingOptions, attributes: [NSObject : AnyObject!], context: NSStringDrawingContext!) 类型的属性是预期的,但我交出类型为[NSObject:AnyObject!]的属性,编译器会抱怨:

错误:&#34;&#39; NSString&#39;与&#39; NSObject&#39;&#34;

不同

我尝试使用[NSString : Any]投射它,但后来我遇到了运行时错误。

致命错误:&#34;不同类型的不同类型&#34;之间不会出现不安全的情况。

有什么建议吗?

1 个答案:

答案 0 :(得分:5)

我猜你正在使用UIFont的{​​{1}}方法,该方法从Xcode 6.1开始返回一个可选项(即可以返回init)。

请尝试将nil替换为UIFont(...)