在我将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;之间不会出现不安全的情况。
有什么建议吗?
答案 0 :(得分:5)
我猜你正在使用UIFont
的{{1}}方法,该方法从Xcode 6.1开始返回一个可选项(即可以返回init
)。
请尝试将nil
替换为UIFont(...)
。