[英]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.