输入'[NSObject:AnyObject]!'不符合协议'DictionaryLiteralConvertible'

时间:2014-09-17 12:52:40

标签: ios swift

self.textView.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.blackColor(),
                                    NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle]

这会给编译器错误提示Type '[NSObject : AnyObject]!' does not conform to protocol 'DictionaryLiteralConvertible'。我刚开始使用Swift并且无法弄清楚出了什么问题。

1 个答案:

答案 0 :(得分:13)

问题是NSUnderlineStyle.StyleSingle是一个Swift枚举值,它不符合AnyObject协议。要解决此问题,请致电toRaw()将其转换为Int

self.textView.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.blackColor(),
                                    NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.toRaw()]

更新(适用于Xcode 6.1):

函数toRaw()已替换为Xcode 6.1中的属性rawValue

self.textView.linkTextAttributes = [NSForegroundColorAttributeName: UIColor.blackColor(),
                                    NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleSingle.rawValue]