【问题标题】:Float conversion crash浮点转换崩溃
【发布时间】:2017-02-13 14:40:43
【问题描述】:

我有这个:

let value = data[1]   // its a string
print("val:",value)   // prints 28.3  
let a:Float = Float(value)!
print("a:",a)

哪个打印a ok,直到有时在value 处崩溃对其有价值

致命错误:在展开可选值时意外发现 nil

我可以将question mark 标记为可选,但我试图了解当有值时它是如何崩溃的。

【问题讨论】:

  • 什么字符串导致它崩溃?
  • 将 value 转换为 .崩溃后,我可以将箭头放在它上面,看到它的值为 28.3 。
  • 字符串中可能有前导或尾随空格、换行符或其他空格?
  • 哦,这可能!因为它来自硬件。谢谢马丁。那么我该如何解决这个问题,无论如何都要进行转换呢? (最后可能会有新的线路/运营商返回)
  • 您可以先“修剪”字符串。 – 或者使用 NSNumberFormatter,如果我没记错的话,它可以容忍空格。

标签: swift string type-conversion


【解决方案1】:

尝试使用if let 的可选包装。

if let a = value as? Float {
     print("a:%f",a)
}

要删除空间尝试这样

let newValue = value.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())

斯威夫特 3

let newValue = value.trimmingCharacters(in: .whitespaces)

【讨论】:

  • 谢谢,我知道,但是为什么它会崩溃??
  • 就行从value到a的转换。 (根据调试器,其中 value 有一个值)
  • @Curnelious 不,我要问的是当它崩溃时,变量值的值是多少?
  • 值= 28.3 。谢谢。
  • 没错,他可能是收容。你的解决方案解决了这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-10
  • 1970-01-01
  • 2023-02-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多