【问题标题】:Unwrapping a Int to String cast in Swift在 Swift 中将 Int 解包为 String 类型转换
【发布时间】:2015-07-08 12:40:43
【问题描述】:

我正在从我的 plist 中收集一个 NSNumber,我想将它打印在一个 String 中:

let tijd = String(self.sortedHighscores[indexPath.row]["Tijd"]!)
cell.detailTextLabel?.text = "\(tijd) seconden"

但在模拟器中我看到打印:例如Optional(120) seconden。 我该如何解决这个问题?我试过解开tijd,但这会导致编译器出错,告诉我删除!

【问题讨论】:

标签: ios swift2 ios9


【解决方案1】:

试试这个:

 var highscore : NSNumber =  self.sortedHighscores[indexPath.row]["Tijd"] as! NSNumber
 var a : String = String(format:"%d",highscore.integerValue)
 cell.detailTextLabel.text = a

【讨论】:

  • 根据我的自动完成,一个 Swift 字符串没有格式初始化器?
  • 那没有用,你确定你不是故意要NSString吗?
  • 是的,我确定...只是尝试复制和粘贴并尝试一下
  • 我是这样解决的:let tijd:NSNumber = self.sortedHighscores[indexPath.row]["Tijd"] as! NSNumberlet tijdStr:String = NSString(format: "%d", tijd.integerValue) as String
【解决方案2】:

tijd 是可选的,你需要解包它,但你也应该检查它是否有值。

if let foo = tijd {
    cell.detailTextLabel?.text = "\(foo) seconden"
}

如果你知道它总是有一个值,"\(tijd!) seconden" 也应该可以工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2017-03-19
    • 1970-01-01
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多