2016-06-07 66 views
0

我是新来这个网站,请裸露在我身边。 我想在Swift中构建一个简单的计算器,但我不知道如何或为什么我得到错误(“字符串类型的值没有成员类型Int”)或如何解决它。这是到目前为止我的代码:Swift代码错误:类型字符串的值有没有成员Int

class ViewController: UIViewController { 
    var isTypingNumber = false 
    var firstNumber = Int!() 
    var secondNumber = Int!() 
    var operation = "" 

@IBOutlet weak var calculatorDisplay: UILabel! 


@IBAction func acButtonTapped(sender: AnyObject) { 

} 
@IBAction func number7Tapped(sender: AnyObject) { 
    let number7 = sender.currentTitle 
    if isTypingNumber{ 
     calculatorDisplay.text = calculatorDisplay.text! + number7!! 
    }else{ 
     calculatorDisplay.text = number7 
     isTypingNumber = true 
    } 
} 
@IBAction func divideTapped(sender: AnyObject) { 
    isTypingNumber = false 

    firstNumber = calculatorDisplay.text?.Int()! **//Error: Value of type 'String' has no member 'Int'** 
    operation = sender.currentTitle!! 
} 

@IBAction func equalsTapped(sender: AnyObject) { 
    isTypingNumber = false 
    var result = 0 
    secondNumber = calculatorDisplay.text?.Int()! **//Error: Value of type 'String' has no member 'Int'** 

    if operation == "+" { 
     result = firstNumber + secondNumber 
    } else if operation == "-" { 
     result = firstNumber - secondNumber 
    }else if operation == "X" { 
     result = firstNumber * secondNumber 
    }else if operation == "÷"{ 
     result = firstNumber/secondNumber 
} 
    calculatorDisplay.text = "\(result)" 
} 



override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    firstNumber = 0 
    secondNumber = 0 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

哪儿我去错了吗?

+2

不要滥用武力展开操作符(''!)这样的。 – Alexander

回答

3

相反的:

firstNumber = calculatorDisplay.text?.Int()! 

你想要的东西,如:

if let text = calculatorDisplay.text? { 
    firstNumber = Int(text)! 
} 

或者,如果你想住在边缘:

firstNumber = Int(calculatorDisplay.text!)! 
+3

由于您正在学习Swift,因此我会鼓励您在不使用'!'的情况下编写所有代码(了解'如果let','guard let'和可选的链接代替)。 –

+0

或'calculatorDisplay.text.flatMap {Int($ 0)}''如果你想得到时髦的 – Hamish

+0

@ originaluser2 ...不要给他们点子......:p – Alexander

1

有一个在没有Int()方法String类型。

要转换IntString,试试这个:

guard let text = calculatorDisplay.text else { 
    //the CalculatorDisplay has no text, deal with it accordingly 
} 
guard let firstNumber = Int(text) else { 
    //the CalculatorDisplay has text, but it's not a valid Int 
} 

//use firstNumber 
相关问题