Swift NSFontAttributeString在XCode 6.1之前工作 let timeFont=[NSFontAttributeName:UIFont(名称:“航程”,大小:20.0)] var attrString3=nsattributestring((Time)”,属性:timeFont);//

Swift NSFontAttributeString在XCode 6.1之前工作 let timeFont=[NSFontAttributeName:UIFont(名称:“航程”,大小:20.0)] var attrString3=nsattributestring((Time)”,属性:timeFont);//,swift,xcode6.1,Swift,Xcode6.1,您的代码无法编译有两个原因: 现在要使用的NSAttributedString的初始值设定项需要显式标记string参数 您现在使用的UIFont初始值设定项返回一个可选值(即UIFont?),在将其传递到属性字典之前,需要先将其展开 请尝试以下方法: let timeFont = [NSFontAttributeName:UIFont(name: "Voyage", size: 20.0)] var attrString3 = NSAttributedString("(Time)", at

您的代码无法编译有两个原因:

  • 现在要使用的
    NSAttributedString
    的初始值设定项需要显式标记
    string
    参数
  • 您现在使用的
    UIFont
    初始值设定项返回一个可选值(即
    UIFont?
    ),在将其传递到属性字典之前,需要先将其展开
请尝试以下方法:

let timeFont = [NSFontAttributeName:UIFont(name: "Voyage", size: 20.0)]
var attrString3 = NSAttributedString("(Time)", attributes : timeFont); // <--- compiler error "Extra argument in call"

注意使用新的聚结操作符
。这将打开可选的“航行”字体,但如果“航行”不可用(在游乐场中似乎就是这样),则返回到系统字体。这样,即使无法加载首选字体,也可以获得属性字符串。

Xcode 6.1附带了支持可能失败的构造函数的Swift 1.1
UIFont
初始化可能失败并返回
nil
。创建
NSAttributedString
时也使用
string:

let font = UIFont(name: "Voyage", size: 20.0) ?? UIFont.systemFontOfSize(20.0)
let attrs = [NSFontAttributeName : font]
var attrString3 = NSAttributedString(string: "(Time)", attributes: attrs)
if let font = UIFont(name: "Voyage", size: 20.0) {
    let timeFont = [NSFontAttributeName:font]
    var attrString3 = NSAttributedString(string: "(Time)", attributes : timeFont)
}