- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有以下代码:
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, buten_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/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!