1

最近、iOS 8.1 で動作するように Xcode 6.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]ためコンパイルに失敗します。 CFStringRefHashable

Dictionary 型を明示的に宣言することで、この問題を回避できます。

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