无法用types为'(string:NSString,attributes:)的参数列表调用'subscript'

我有下面的代码,但是当我编译我得到这个错误:

“不能用types'(string:NSString,attributes:[NSString:UIFont?])”的参数列表调用'subscript'“。

此代码在xCode 6.0.1上正常工作,但在升级到6.1之后,出现此错误。

let textboldFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Bold", size: 15.0)] let textregularFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Regular", size: 15.0)] let para = NSMutableAttributedString() let attributedstring1 = NSAttributedString(string: dateArray[1] as NSString, attributes:textboldFont) 

不幸的是,来自Swift的错误信息有时候并不是很有用。 问题不是下标,它是属性数组。

正如您在标题中看到的那样,您使用的UIFont初始值设定项返回一个可选的UIFont:

 init?(name fontName: String, size fontSize: CGFloat) -> UIFont 

但是NSAttributedString初始化器需要一个[NSObject : AnyObject]数组。 注意AnyObject ,它不是AnyObject? 。 所以你必须先解开UIFont

你有两个select:

安全的方式。 检查是否可以创build这些UIFonts,否则使用系统提供的字体:

 let textboldFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Bold", size: 15.0) ?? UIFont.boldSystemFontOfSize(15.0)] let textregularFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Regular", size: 15.0) ?? UIFont.systemFontOfSize(15.0)] 

危险的方式。 强制打开可选字体。 如果字体无法创build,这将会崩溃:

 let textboldFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Bold", size: 15.0)!] let textregularFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Regular", size: 15.0)!]