gpt4 book ai didi

iOS 应用程序在手机上崩溃但在模拟器上运行良好

转载 作者:搜寻专家 更新时间:2023-10-31 22:00:38 24 4
gpt4 key购买 nike

我有以下代码:

var displayValue: Double{
get{
println("display.text =\(display.text!)")
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
}
set{
display.text = "\(newValue)"
userIsInTheMiddleOfTypingANumber = false;
}
}

它在模拟器中运行良好。但是当我在手机上尝试时它崩溃了。这是控制台:

digit= 3
display.text =3
operandStack =[3.0]
digit= 2
display.text =2
operandStack =[3.0, 2.0]
display.text =6.0
fatal error: unexpectedly found nil while unwrapping an Optional value

这一行:

NSNumberFormatter().numberFromString(display.text!)!

返回 nil 导致应用程序崩溃,因为它无法解包可选。我真的不知道怎么了。我正在学习 iTunes U 中的一些教程。

如有任何帮助,我们将不胜感激。

最佳答案

尝试:

get{
println("display.text =\(display.text!)")
let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX")
return formatter.numberFromString(display.text!)!.doubleValue
}

因为 NSNumberFormatter 默认使用设备区域设置,小数点分隔符可能不是 "."。例如:

let formatter = NSNumberFormatter()
formatter.locale = NSLocale(localeIdentifier: "ar-SA")
print(formatter.decimalSeparator!) // -> outputs "٫"
formatter.numberFromString("6.0") // -> nil

使用此类语言环境的格式化程序无法解析像 "6.0" 这样的字符串。因此,如果您希望格式化程序获得一致的结果,您应该明确指定 locale

关于 en_US_POSIX 语言环境,参见 the document :

In most cases the best locale to choose is en_US_POSIX, a locale that's specifically designed to yield US English results regardless of both user and system preferences. en_US_POSIX is also invariant in time (if the US, at some point in the future, changes the way it formats dates, en_US will change to reflect the new behavior, but en_US_POSIX will not), and between platforms (en_US_POSIX works the same on iPhone OS as it does on OS X, and as it does on other platforms).

关于iOS 应用程序在手机上崩溃但在模拟器上运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28382482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com