【问题标题】:Swift 2 Converting from String To NumberSwift 2 从字符串转换为数字
【发布时间】:2015-12-24 20:34:27
【问题描述】:

我正在关注 iOS 开发的斯坦福视频,我正在使用 Xcode 7Swift 2。 我从视频中逐行编写代码,但是我不断收到错误消息。

import UIKit

class ViewController: UIViewController
{

@IBOutlet weak var display: UILabel!

var userIsTyping = false

@IBAction func AppendDigit(sender: UIButton) {
    let digit = sender.currentTitle!
    if userIsTyping {
        display.text = display.text! + digit
    } else {
        display.text = digit
        userIsTyping = true
    }
}

var operandStack = Array<Double>()

@IBAction func enter() {
    userIsTyping = false
    operandStack.append(displayValue)
}

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

    }
}


}

在我返回的那一行

NumberFormatter().numberFromString(display.text!)!.doubleValue

我得到一个错误

线程 1:EXC_BAD_INSTRUCTION(code=EXC_1386_INVOP,subcode=0x0)

【问题讨论】:

  • 您的标签 display 为 nil 或包含非数字字符串。

标签: ios swift


【解决方案1】:

转换可能会失败。结果可能为零。这 ”!”意思是“编译器,我 100% 确定结果永远不会为零,所以如果它永远为零,那么请崩溃”。你猜怎么着,有时它是零。

使用“如果让”。

PS。我认为使用用户界面元素(例如按钮的标题)并假设它们具有某些值是非常非常不健康的。

【讨论】:

  • 确实如此。有一种叫做“用户输入卫生/验证”的东西。
【解决方案2】:

你最好用一个更简单的return语句代替:

return Double(display.text!)!

【讨论】:

    【解决方案3】:

    让 Number = (NSNumberFormatter().numberFromString(xtxt.text!)as!Double)

     return Number
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-25
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-11
      • 1970-01-01
      相关资源
      最近更新 更多