1

我最近更新到 Xcode 6.1 以便能够使用 iOS 8.1,但现在我的最新项目面临错误。

对于以下行,我收到“CFString!不符合协议 Hashable”的错误消息:

let attributes = [kCTForegroundColorAttributeName:UIColor.blackColor().CGColor, kCTFontAttributeName: font]

运行 Xcode 6.0.1 时我没有收到此错误。而且,Xcode 6.1 非常慢。我的意思是,太慢了,它实际上并没有完成加载任何东西。索引需要几分钟,而构建需要很长时间,以至于我无法坐下来……它也崩溃了。

我的主要问题是 Hashable 协议。那是怎么回事?

4

1 回答 1

6

这似乎是包含 CF 对象的字典的类型推断错误。

编译器(显然)使用第一个键/值对来推断类型为 Dictionary 的字典[CFStringRef:CGColorRef],然后因为CFStringRef不符合Hashable.

您可以通过显式声明 Dictionary 类型来解决此问题:

let attributes : [String:AnyObject] = [
    kCTForegroundColorAttributeName:UIColor.blackColor().CGColor, 
    kCTFontAttributeName:font
]
于 2014-10-23T08:17:46.847 回答