Swift 中的 NSAttributedString 问题

NSAttributedString issues in Swift

无论我走哪条路,我都遇到了 NSAtributedString 的问题,似乎无法弄清楚问题是什么。

使用下面的代码我得到:Cannot invoke 'init' with an argument list of type '(string: StringLiteralConvertible, attributes: $T6)'

let cancelButtonTitle = NSAttributedString(string: "CANCEL", attributes: [NSFontAttributeName: buttonFont, NSForegroundColorAttributeName: UIColor.whiteColor()])

知道问题出在哪里吗?我试过 xcode 6.1 和 6.2。

NSFontAttributeName 应设置为 UIFont 对象。

let buttonFont = UIFont.systemFontOfSize(10)

let cancelButtonTitle = NSAttributedString(string: "CANCEL",
    attributes: [NSFontAttributeName: buttonFont,
        NSForegroundColorAttributeName: UIColor.whiteColor()])

或者如果您使用的是特定字体。

if let buttonFont = UIFont(name: "Your Font", size: 10) {

    let cancelButtonTitle = NSAttributedString(string: "CANCEL",
    attributes: [NSFontAttributeName: buttonFont,
        NSForegroundColorAttributeName: UIColor.whiteColor()])
}

因为UIFont(name:,size:)构造函数returns一个optional,你需要在NSAttributedString

中使用它之前解包