我有以下代码但是当我编译时我得到了这个错误:
"无法调用'下标'使用类型'的参数列表(字符串:NSString,属性:[NSString:UIFont?])"。
此代码在 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)
答案 0 :(得分:1)
不幸的是,来自Swift的错误消息有时并不真正有用。问题不是下标,而是属性数组。
正如您在标题中看到的那样,您使用的UIFont初始化程序返回一个可选的UIFont:
init?(name fontName: String, size fontSize: CGFloat) -> UIFont
但NSAttributedString
初始化程序需要一个[NSObject : AnyObject]
数组。请注意AnyObject
,它不是AnyObject?
。所以你必须先打开UIFont
。
您有两种选择:
安全的方式。检查是否可以创建这些UIF字符,否则使用系统提供的字体:
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)]
危险的方式。强制打开可选字体。如果无法创建字体,则会崩溃:
let textboldFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Bold", size: 15.0)!]
let textregularFont = [NSFontAttributeName:UIFont(name: "ProximaNova-Regular", size: 15.0)!]