加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

iOS应用程序在手机上崩溃,但在模拟器上运行正常

发布时间:2020-12-15 01:47:11 所属栏目:百科 来源:网络整理
导读:我有以下代码: var displayValue: Double{ get{ println("display.text =(display.text!)") return NSNumberFormatter().numberFromString(display.text!)!.doubleValue } set{ display.text = "(newValue)" userIsInTheMiddleOfTypingANumber = false; }
我有以下代码:

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”之类的字符串.因此,如果您希望格式化程序获得一致的结果,则应明确指定语言环境.

对于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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读