我在Xcode上创建了一个简单的猜测游戏,用户必须正确猜测数字(0到5之间)。我以为我已经检查了我的textFieldInt
的nil值,以确保如果没有提交值,应用程序不会崩溃。不幸的是,情况似乎并非如此,我也不确定我的错在哪里。
如果我没有输入值并按下按钮,我会收到以下错误消息:
致命错误:在展开可选值时意外发现nil
我以前遇到过这个问题,并通过正确检查nil的右选项来解决它。尽管现在它似乎仍然“意外地发现了nil”,即使已经考虑了nil值。
@IBOutlet var textField: UITextField!
@IBOutlet var label: UILabel!
@IBAction func buttonTapped(_ sender: Any) {
let textFieldInt: UInt32 = UInt32(textField.text!)!
let number = arc4random_uniform(6)
if textFieldInt != nil {
if textFieldInt != number {
label.text = "Wrong! It was \(number)"
}
else if textFieldInt == number {
label.text = "You're right!"
}
else {
label.text = "Please enter a number!"
}
}
}
使用if let
或guard let
测试您的值。例如
if let textFieldInt = UInt32(textField.text!) {
//textField.text! can be converted to UInt32
if textFieldInt != number {
label.text = "Wrong! It was \(number)"
}
else if textFieldInt == number {
label.text = "You're right!"
}
}else {
//textField.text! can NOT be converted to UInt32
label.text = "Please enter a number!"
}
或者
guard let textFieldInt = UInt32(textField.text!) else {
//textField.text! can NOT be converted to UInt32
label.text = "Please enter a number!"
return
}
//textField.text! can be converted to UInt32
if textFieldInt != number {
label.text = "Wrong! It was \(number)"
}
else if textFieldInt == number {
label.text = "You're right!"
}
我相信错误发生在
let textFieldInt: UInt32 = UInt32(textField.text!)!
如果textField
为空,则textField。文本
将为零,textField。短信
将导致崩溃。
你可以用like
@IBAction func buttonTapped(_ sender: Any) {
if textField.text != nil {
let textFieldInt: UInt32 = UInt32(textField.text!)!
let number = arc4random_uniform(6)
if textFieldInt != nil {
if textFieldInt != number {
label.text = "Wrong! It was \(number)"
}
else if textFieldInt == number {
label.text = "You're right!"
}
else {
label.text = "Please enter a number!"
}
}
}
else {
label.text = "Please enter a number!"
}
}
即使在谷歌搜索了几个小时后,我也无法找出确切的问题。我已经检查了StackOverflow本身的几个答案,但未能找出问题所在。 错误跟踪如下: 主要活动代码: 更新1:我已经做了答案中建议的所有更改,但每当我单击MainActivity中的“跳过指令”按钮时,我的应用程序仍然崩溃。此外,当我从AdminLogin活动中单击“登录”按钮时,应用程序崩溃。我该怎么办? Update2:我提到了什么是N
问题内容: 我已经四处搜寻,但是还没有找到一个答案,该答案并未将我引向第3方服务。我不需要任何复杂的东西,只是为了保存一个值,所以当该应用程序下次打开时,我可以显示一条警报,指出该应用程序已崩溃。 谢谢。 问题答案: 感谢@RyanCollins的一点帮助,我能够自己解决问题。“ 应用程序委托”中的功能仅在应用程序正常关闭时运行。用于本地检测应用程序崩溃的代码如下所示。 全局定义的变量 应用程序委
03-29 19:26:37.449 176 02-17602/com.developerillusion.hive e/androidruntime:致命异常:main process:com.developerillusion.hive,pid:17602 java.lang.runtimeexception:无法启动活动ComponentInfo{com.developerillusion.
一调用方法,我的计时器应用程序就崩溃了,它显示的对象引用为空,尽管我做得正确,但我找不到问题。请,某人,看看下面的代码:(我也附上logcat) 原因:java.lang.NullPointerException:尝试对空对象引用调用虚拟方法“void android.os.CountDownTimer.Cancel()”
我使用下面的代码插入了捕获图像,并获得了< code >“not null”,这表明数据不为null。 然而,当我试图检索捕获的图像时,应用程序崩溃了。 MyDatabaseHelper.java 原因:Java . lang . illegalstateexception:无法从CursorWindow读取第0行第0列。在从游标访问数据之前,请确保游标已正确初始化。at Android . da
我正在尝试将图像添加到我新创建的应用程序中。但是,当我运行我的应用程序时,它会崩溃。我没有在我的应用程序中编写任何代码,因此我提供了XML代码和错误日志。我在以前的应用程序中使用了ImageViews。没有错误。我已经优化了我的图像,但它仍然给我错误。 图像详细信息 错误日志: 09-08 16:03:02.266 15137-15137/ooper.loopE/AndroidRuntime: F