【问题标题】:XCode 6.1 NSString.boundingRectWithSize Compile ErrorXCode 6.1 NSString.boundingRectWithSize 编译错误
【发布时间】: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”。

有什么建议吗?

【问题讨论】:

    标签: ios xcode swift


    【解决方案1】:

    我猜你使用的是 UIFontinit 方法,它从 Xcode 6.1 开始返回一个可选的(即可以返回 nil)。

    所以尝试将UIFont(...) 替换为UIFont(...)!

    【讨论】:

    • 接受!你是英雄!谢谢。
    • 天哪,这太令人困惑了。编译器报告了如此有趣的错误!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多