[英]NSInteger 0+0=4300282608
我正在開發一個簡單的計算器應用程序,以了解OSX開發的工作原理(這不是功課)。 當觸發addAction(_ sender: NSButton)
,它會將currentCount
和amountToAdd
一起添加,然后更新currentCount
並將其設置為currentCountLabel
。
問題:當應用程序首次啟動時, currentCount
和amountToAdd
設置為0但加在一起時等於4,300,282,608。 如果我在添加之前按下清除按鈕,則等於0,這是正確的。
問題:如何更改代碼第一次進行正確的計算。 這似乎是一個鑄造問題。
import Cocoa
class ContainerViewController: NSViewController {
var currentCount: Int = 0
var amountToAdd: Int = 0
@IBOutlet weak var currentCountLabel: NSTextField!
@IBOutlet weak var amountToAddTextField: NSTextField!
override func viewDidLoad() {
super.viewDidLoad()
currentCountLabel.integerValue = 0
amountToAddTextField.integerValue = 0
}
@IBAction func amountTextField(_ sender: NSTextField) {
amountToAdd = amountToAddTextField.integerValue
}
@IBAction func addAction(_ sender: NSButton) {
currentCount = currentCount + amountToAdd
currentCountLabel.integerValue = currentCount
}
@IBAction func clearAction(_ sender: Any) {
currentCount = 0
amountToAdd = 0
currentCountLabel.integerValue = 0
amountToAddTextField.integerValue = 0
}
func getEntryLog() -> String {
return "\(currentCount) + \(amountToAdd) = \(currentCount + amountToAdd)"
}
}
上傳圖像后,當前計數最終成為每次運行時的隨機數...
我建議你在addAction
添加一個斷點,並確認這兩個值中的哪一個是不正確的。 根據您與我們分享的內容,推測currentCount
不是您認為的那樣。
我在這里看到的唯一一個小的邏輯斷開是在viewDidLoad
,你假設amountToAdd
和currentCount
都是0
,雖然從技術上講,對於任何人來說,這個視圖控制器可能已經重置了這些值之一(可能是錯誤的)視圖控制器已實例化,並在加載時。
要解決此邏輯斷開連接,您可以顯式使用這些變量而不是0:
override func viewDidLoad() {
super.viewDidLoad()
currentCountLabel.integerValue = currentCount
amountToAddTextField.integerValue = amountToAdd
}
或者,如果要加載視圖控制器以重置視圖,則讓viewDidLoad
和clearAction
調用一些常見的例程:
override func viewDidLoad() {
super.viewDidLoad()
resetValues()
}
@IBAction func clearAction(_ sender: Any) {
resetValues()
}
private func resetValues() {
currentCount = 0
amountToAdd = 0
currentCountLabel.integerValue = 0
amountToAddTextField.integerValue = 0
}
如果您有其他代碼提供此視圖控制器,我建議您檢查可能已設置(可能不正確) currentCount
。
或者在viewDidLoad
放置一個斷點,並在值上添加一個不是您認為應該的值的監視。 例如,我控制 - 在變量視圖中單擊currentCount
,並選擇“Watch currentCount”,現在每次該值更改時它都會停止。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.