我正在开发一个简单的计算器应用程序,以了解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)"
}
}
上传图片时,当前计数最终每次运行都是一个随机数...
答案 0 :(得分:0)
我建议您在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
中放置一个断点,然后在一个您认为不应该的值上添加一个监视。例如。我 control 在变量视图中单击currentCount
,然后选择“ Watch currentCount”,它每次值更改时都会停止。