私はいくつかのコードを整理し、より複雑な関数で長いif文を置き換えようとしています。この状況では、変数 "pickerSelectedName"で2つのラベルを更新しますが、今作成した関数がプログラムをクラッシュさせます。クラッシュ:「スレッド1:EXC_BAD_ACCESS」?
エラーコード - スレッド1:EXC_BAD_ACCESS(コード= 2、アドレス= 0xbf784ffc)
残念ながら誰かた場合、私は思っていた...私はまだSWIFTとXcodeに新しいですので、私はデバッガで素晴らしいではありませんよなぜこれがクラッシュするのかを説明するのに役立つでしょうか?
人
class Person {
var name = String()
var age = Int()
let nameList:Dictionary = ["Bob":Bob(),"Joe":Joe(),"Tom":Tom()]
class Bob:Person {
override init() {
super.init()
name = "Bob"
age = 27
}
}
class Joe:Person {
override init() {
super.init()
name = "Joe"
age = 26
}
}
class Tom:Person {
override init() {
super.init()
name = "Tom"
age = 28
}
}
}
のViewController
class ViewController: UIViewController {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var ageLabel: UILabel!
var pickerSelectedName = "Bob"
var name = String()
var age = String()
override func viewWillAppear(animated: Bool) {
updateLabel(pickerSelectedName)
}
func updateLabel(name:String) {
var selectedName = String()
var selectedAge = String()
if Person().nameList[name] != nil {
selectedName = (Person().nameList[name]?.name)!
selectedAge = (Person().nameList[name]?.name)!
} else {
selectedName = "Error"
selectedAge = "Error"
}
nameLabel.text = selectedName
ageLabel.text = selectedAge
}
}
あなたの 'viewWillAppear(animated:Bool)'メソッドでは、 'selectedName'プロパティがどこで宣言されたのか見つかりませんでした。あなたのコードのいくつかを省略しましたか、意図的にしましたか? – Leviathlon
また、 'People'は実行可能なクラス名ではなく、バッグクラスではないので、クラス名に単数名詞を使用する傾向があります。 「人」は行く道だ。 – Leviathlon
ああ、申し訳ありません...それはpickerSelectedNameだったはずです。私はちょうど更新、良い見つける。 – sMk