web-dev-qa-db-ja.com

Swift 4のNSAttributedStringKeyエラー

Swift 4に更新した後、このコードでエラーが発生します

    attributes["NSFont"] = font
    attributes["NSColor"] = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1)

タイプ 'String'のインデックスを持つタイプ '[NSAttributedStringKey:Any]'の値に添え字を付けることはできません

["NSFont"]NSAttributedStringKey.fontに置き換えることで最初の行を修正できましたが、2行目を修正する方法がわかりません。

8
j.doe

Swift 4-NSAttributedString表現が完全に変更されています。

属性辞書を置き換えます-attributesタイプ、[String : Any]から[NSAttributedStringKey : Any]または[NSAttributedString.Key : Any](まだ完了していない場合)。

これを試してください

Swift 4.2以降:

attributes[NSAttributedString.Key.font] = font
attributes[NSAttributedString.Key.foregroundColor] = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1)

Swift 4.0および4.1:

attributes[NSAttributedStringKey.font] = font
attributes[NSAttributedStringKey.foregroundColor] = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1)

Apple document: NSAttributedString.Key からのメモです。

18
Krunal

使用する NSAttributedStringKey.foregroundColor 2番目の場合、キーは文字列ではなく、列挙型定数です。

attributes[NSAttributedStringKey.font] = font
attributes[NSAttributedStringKey.foregroundColor] = UIColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1)

すべてのキーは NSAttributedStringKeyの公式ドキュメント にあります。

2
Milan Nosáľ

Swift 3.3、NSForegroundColorAttributeNameNSFontAttributeName like

NSAttributedString(string: "text", attributes: [NSForegroundColorAttributeName : UIColor.white])

Swift 4.0+

NSAttributedString(string: "text", attributes: [NSAttributedStringKey.foregroundColor : UIColor.white])
1
Bhanu