我想在這裏做這個教程。我是一個總的初學者,這將是我的第一個iOS應用時期:解包標籤並轉換爲()
http://www.ioscreator.com/tutorials/calculator-tutorial-in-ios8-with-swift
這裏是我的代碼:
進口的UIKit
class ViewController: UIViewController {
var isTypingNumber = false
var firstNumber = 0
var secondNumber = 0
var operation = ""
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBOutlet weak var calculatorDisplay: UILabel!
@IBAction func numberTapped(sender: AnyObject) {
var number = sender.currentTitle
if isTypingNumber {
calculatorDisplay.text = calculatorDisplay.text! + number!!
} else {
calculatorDisplay.text = number
isTypingNumber = true
}
}
@IBAction func calculationTapped(sender: AnyObject) {
isTypingNumber = false
firstNumber = calculatorDisplay.text?.toInt()!
operation = sender.currentTitle!!
}
@IBAction func equalsTapped(sender: AnyObject) {
isTypingNumber = false
var result = 0
secondNumber = calculatorDisplay.text?.toInt()!!
if operation == "+" {
result = firstNumber + secondNumber
} else if operation == "-" {
result = firstNumber - secondNumber
}
calculatorDisplay.text = "\(result)"
}
}
這裏是發生了什麼。我得到一個錯誤,說可選類型Int的值?不打開,你的意思是使用!要麼 ?
它提供了通過添加感嘆號來修復它,然後說這是錯誤的,並提供刪除感嘆號。查看截圖:
我主要是瞭解自選以及如何使用它們的概念,但這莫名其妙給我。
雖然這是真的問這個問題的人正在使用可選的鏈接,它確實沒有意義,爲什麼toInt()返回一個可選的詮釋。在字符串實例上調用toInt()並不能保證返回一個值,例如,如果用戶寫了「thirty」.toInt()和「30」.toInt()。請考慮優化您的答案以保持點,因爲您的其他建議是現貨和完美的。我個人建議使用可選綁定,因爲零合併返回0可能是一個有效的值,並可能拋出它們的邏輯。 –
不,但是'toInt()'返回一個可選的事實並不能解釋爲什麼'calculatorDisplay.text?.toInt()!'仍然是可選的。那是什麼造成他的麻煩。最後的'!'只展示'toInt()'的結果,但由於文本後面的'?'鏈仍然返回一個可選項。這是我的觀點。 – vacawama
Ack!你是對的,我誤解它認爲整個表達式正在被解開,而只是toInt()。對於那個很抱歉。也經過測試和確認。 –