入门错误EXC_BAD_INSTRUCTION(代码= I386_INVOP,子码=为0x0)
问题描述:
错误在UISegmentedControl.selectedSegmentIndex入门错误EXC_BAD_INSTRUCTION(代码= I386_INVOP,子码=为0x0)
产生我试着用title属性,而不是交换机,但它并没有帮助,出现了同样的错误。
当我评论整个函数并尝试打印numberOfColumnsSelector.selectedSegmentIndex时,它不会崩溃并打印正确的答案。
控制台输出:“致命错误:意外地发现零而展开的可选值”
我评论,低于该线导致的错误:
import UIKit
class ViewController: UIViewController {
//Declaring variables
@IBOutlet weak var numberOfColumnsSelector: UISegmentedControl!
@IBOutlet weak var populatedPlacesSelector: UITextField!
var numberOfColumns: Int = 0
var populatedPlaces: [Int] = []
// This makes those previously declared variables accessible
func makeVariablesAccessible() -> (size: Int, popPlacesArray: [Int]) {
// THE LINE BELOW IS THE PROBLEMATIC ONE
switch numberOfColumnsSelector.selectedSegmentIndex {
case 0:
numberOfColumns = 2
case 1:
numberOfColumns = 3
case 2:
numberOfColumns = 4
case 3:
numberOfColumns = 5
case 4:
numberOfColumns = 6
case 6:
numberOfColumns = 7
case 8:
numberOfColumns = 8
default:
numberOfColumns = 2
}
if populatedPlacesSelector.text != "" {
var counter = 0
var popPlaceString = ""
for c in populatedPlacesSelector.text!.characters {
if c == "." {
populatedPlaces.append(Int(popPlaceString)!)
print(populatedPlaces)
print(popPlaceString)
popPlaceString = ""
counter++
}
else {
popPlaceString.append(c)
}
}
}
return (numberOfColumns, populatedPlaces)
}
}
答
我发现的问题是我在另一个ViewController上请求这些值,使得它们无法访问,在我解决这个问题后,它工作,谢谢所有帮助我的人。
你是否检查过'numberOfColumnsSelector'不是零?也许你的插座没有正确连接。 – Michael
是的,所以程序告诉我它是零(至少这是我的想法),但连接正确完成(我只是重新检查它)。 – PKLJ
这段代码什么时候运行?它至少需要在viewDidLoad中。任何早些时候,就像在初始化器中那样,网点将不会被设置。 – Michael