【发布时间】:2014-10-21 14:56:48
【问题描述】:
在我将 Xcode 更新到 6.1 后,我的现有项目出现了几个编译器错误。
我定义了像
这样的属性let styleAttriutes = [
NSFontAttributeName : UIFont(...),
NSForgeroundColorAttributeName : UIColor.blackColor()
]
错误:“找不到接受所提供参数的 'init' 的重载”
所以我声明了推断的 Dictionary 显式添加 : [NSString : Any] 因为所有关键常量的类型都是 NSString 并且我们有不同的值:UIFont / UIColor 和 @ 987654325@也是不允许的。
let styleAttriutes : [NSString : Any] = [ ...
现在编译器在这一点上很高兴。
定义的属性用于
text.boundingRectWithSize(size: CGSize, options: NSStringDrawingOptions, attributes: [NSObject : AnyObject!], context: NSStringDrawingContext!)
由于[NSObject:AnyObject!] 类型的属性是预期的,但我交出了[NSString : Any] 类型的属性,编译器抱怨:
错误:“'NSString' 与 'NSObject' 不同”
我尝试使用 attributes as [NSObject : AnyObject] 进行转换,但随后出现运行时错误。
致命错误:“不能在不同大小的类型之间使用 unsafeBitCast”。
有什么建议吗?
【问题讨论】: