NS整数 0+0=4300282608
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
中放置一个断点,并在不是您认为应该的值上添加一个监视。例如。我 control-单击变量视图中的 currentCount
,然后选择“Watch currentCount”,现在每次该值更改时它都会停止。
我正在开发一个简单的计算器应用程序以了解 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
中放置一个断点,并在不是您认为应该的值上添加一个监视。例如。我 control-单击变量视图中的 currentCount
,然后选择“Watch currentCount”,现在每次该值更改时它都会停止。