即使网点看起来正确,如何解决错误 SIGABRT?
How to solve the error SIGABRT even if the outlets look correct?
我正在使用 Xcode
和 Swift
开发我的第一个 iOS 应用程序。我的应用有多个 UIViewController
(=VC)。一切正常,但有一个错误,我无法在 Google 或 Whosebug 的帮助下自行解决。
我的问题是:
我在 VC 'CompleteTest' 中有一个名为 'Quit' 的 UIButton
,我控制它在 Main
情节提要中拖到 VC 'Main Menu' 以便在按下时将用户带回 'Main Menu'。
但是当我在模拟器中单击此 UIButton
时出现错误:
Thread 1 signal SIGABRT comes up.
这不是我第一次遇到这个错误,我看到堆栈溢出中的多个线程给出了解决这个问题的方法。过去通过检查网点我可以很容易地解决这个错误。
但在这种情况下,这个解决方案不起作用,因为插座看起来很好(没有显示感叹号)。
更奇怪的是错误显示在哪里。
通常 SIGABRT
错误显示在 AppDelegate
中,如果我没记错的话。
但就我而言,它显示在 VC 'CompleteTest' 文件的第 54 行。在这一行,我使用覆盖函数 'prerpare'.
将数据传输到下一个 VC 'Final Complete test'
不幸的是,我不能在这个问题中放图片,即使很难
我准备好了。无论如何,我希望我的问题仍然清楚。
此外,请原谅我的英语不好,因为它是我的第二语言。
我该如何进行?预先感谢您的帮助!
import UIKit
class CompleteTest: UIViewController {
// Components of Visualisation VC
@IBOutlet weak var ShotNumber: UILabel!
@IBOutlet weak var ProjectedScore: UILabel!
@IBOutlet weak var Distance: UILabel!
var sum: Double = 100.0 //sum represents overall Score of Test
@IBOutlet weak var Report: UIButton!
var help: Int = 0 // var 'help' is helping to change the number showed on the Scoring Buttons in VC
@IBOutlet weak var Left1: UIButton!
@IBOutlet weak var Right1: UIButton!
@IBOutlet weak var Center1: UIButton!
@IBOutlet weak var BadContact1: UIButton!
//Percentage components
var leftpct: Int = 0
var rightpct: Int = 0
var centerpct: Int = 0
var totalpct: Int = 0
var badcontactpct: Int = 0
// Transfer of data from ViewController 'CompleteTest' to ViewController 'FinalCompleteTest'
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let finalCompleteTest = segue.destination as! FinalCompleteTest
finalCompleteTest.score = String(sum)
finalCompleteTest.Leftpct = Int(leftpct)
finalCompleteTest.Rightpct = Int(rightpct)
finalCompleteTest.Centerpct = Int(centerpct)
finalCompleteTest.Totalpct = Int(totalpct)
finalCompleteTest.BadContactpct = Int(badcontactpct)
}
override func viewDidLoad() {
super.viewDidLoad()
Report.isHidden = true
}
//Scoring Buttons
@IBAction func BadContact(_ sender: Any) {
sum -= 1
BadContact1.setTitle("OK", for: .normal)
badcontactpct += 1
}
@IBAction func Left(_ sender: Any) {
sum -= 0.5
help += 1
Left1.setTitle(String(help), for: .normal)
if help == 1 {
leftpct += 1
totalpct += 1}
}
@IBAction func Right(_ sender: Any) {
sum -= 0.5
help += 1
Right1.setTitle(String(help), for: .normal)
if help == 1 {
rightpct += 1
totalpct += 1}
}
@IBAction func Center(_ sender: Any) {
Center1.setTitle("0", for: .normal)
centerpct += 1
totalpct += 1
}
感谢您花时间写出如此详尽的问题。如果需要,您可以将图片上传到其他网站(例如 imgur),然后使用此处的直接链接。
作为 ,as!
可能是您遇到此崩溃的原因。如果将代码替换为如下内容,则可以轻松证明这一点:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let finalCompleteTest = segue.destination as? FinalCompleteTest {
finalCompleteTest.score = String(sum)
finalCompleteTest.Leftpct = Int(leftpct)
finalCompleteTest.Rightpct = Int(rightpct)
finalCompleteTest.Centerpct = Int(centerpct)
finalCompleteTest.Totalpct = Int(totalpct)
finalCompleteTest.BadContactpct = Int(badcontactpct)
} else {
print("oh no, segue.destination is not a FinalCompleteTest")
}
}
如果您可以在控制台中看到该消息,则可能是您没有在故事板上正确连接某些内容。
如果没有,请尝试向我们提供更多信息。
如果您不理解 "dangers" 在您的代码中使用 !
,请先尝试理解 Optionals,如果您需要更多帮助,请随时询问.
祝你好运!
我正在使用 Xcode
和 Swift
开发我的第一个 iOS 应用程序。我的应用有多个 UIViewController
(=VC)。一切正常,但有一个错误,我无法在 Google 或 Whosebug 的帮助下自行解决。
我的问题是:
我在 VC 'CompleteTest' 中有一个名为 'Quit' 的 UIButton
,我控制它在 Main
情节提要中拖到 VC 'Main Menu' 以便在按下时将用户带回 'Main Menu'。
但是当我在模拟器中单击此 UIButton
时出现错误:
Thread 1 signal SIGABRT comes up.
这不是我第一次遇到这个错误,我看到堆栈溢出中的多个线程给出了解决这个问题的方法。过去通过检查网点我可以很容易地解决这个错误。 但在这种情况下,这个解决方案不起作用,因为插座看起来很好(没有显示感叹号)。
更奇怪的是错误显示在哪里。
通常 SIGABRT
错误显示在 AppDelegate
中,如果我没记错的话。
但就我而言,它显示在 VC 'CompleteTest' 文件的第 54 行。在这一行,我使用覆盖函数 'prerpare'.
不幸的是,我不能在这个问题中放图片,即使很难 我准备好了。无论如何,我希望我的问题仍然清楚。
此外,请原谅我的英语不好,因为它是我的第二语言。
我该如何进行?预先感谢您的帮助!
import UIKit
class CompleteTest: UIViewController {
// Components of Visualisation VC
@IBOutlet weak var ShotNumber: UILabel!
@IBOutlet weak var ProjectedScore: UILabel!
@IBOutlet weak var Distance: UILabel!
var sum: Double = 100.0 //sum represents overall Score of Test
@IBOutlet weak var Report: UIButton!
var help: Int = 0 // var 'help' is helping to change the number showed on the Scoring Buttons in VC
@IBOutlet weak var Left1: UIButton!
@IBOutlet weak var Right1: UIButton!
@IBOutlet weak var Center1: UIButton!
@IBOutlet weak var BadContact1: UIButton!
//Percentage components
var leftpct: Int = 0
var rightpct: Int = 0
var centerpct: Int = 0
var totalpct: Int = 0
var badcontactpct: Int = 0
// Transfer of data from ViewController 'CompleteTest' to ViewController 'FinalCompleteTest'
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let finalCompleteTest = segue.destination as! FinalCompleteTest
finalCompleteTest.score = String(sum)
finalCompleteTest.Leftpct = Int(leftpct)
finalCompleteTest.Rightpct = Int(rightpct)
finalCompleteTest.Centerpct = Int(centerpct)
finalCompleteTest.Totalpct = Int(totalpct)
finalCompleteTest.BadContactpct = Int(badcontactpct)
}
override func viewDidLoad() {
super.viewDidLoad()
Report.isHidden = true
}
//Scoring Buttons
@IBAction func BadContact(_ sender: Any) {
sum -= 1
BadContact1.setTitle("OK", for: .normal)
badcontactpct += 1
}
@IBAction func Left(_ sender: Any) {
sum -= 0.5
help += 1
Left1.setTitle(String(help), for: .normal)
if help == 1 {
leftpct += 1
totalpct += 1}
}
@IBAction func Right(_ sender: Any) {
sum -= 0.5
help += 1
Right1.setTitle(String(help), for: .normal)
if help == 1 {
rightpct += 1
totalpct += 1}
}
@IBAction func Center(_ sender: Any) {
Center1.setTitle("0", for: .normal)
centerpct += 1
totalpct += 1
}
感谢您花时间写出如此详尽的问题。如果需要,您可以将图片上传到其他网站(例如 imgur),然后使用此处的直接链接。
作为 as!
可能是您遇到此崩溃的原因。如果将代码替换为如下内容,则可以轻松证明这一点:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let finalCompleteTest = segue.destination as? FinalCompleteTest {
finalCompleteTest.score = String(sum)
finalCompleteTest.Leftpct = Int(leftpct)
finalCompleteTest.Rightpct = Int(rightpct)
finalCompleteTest.Centerpct = Int(centerpct)
finalCompleteTest.Totalpct = Int(totalpct)
finalCompleteTest.BadContactpct = Int(badcontactpct)
} else {
print("oh no, segue.destination is not a FinalCompleteTest")
}
}
如果您可以在控制台中看到该消息,则可能是您没有在故事板上正确连接某些内容。
如果没有,请尝试向我们提供更多信息。
如果您不理解 "dangers" 在您的代码中使用 !
,请先尝试理解 Optionals,如果您需要更多帮助,请随时询问.
祝你好运!