Я пытаюсь очистить часть своего кода и заменить длинные операторы if более сложными функциями. В этой ситуации я хочу, чтобы переменная «pickerSelectedName» обновляла две метки, но прямо сейчас функция, которую я создал ниже, сбрасывает программу.Сбой: «Thread 1: EXC_BAD_ACCESS»?
код ошибки - Тема 1: EXC_BAD_ACCESS (код = 2, адрес = 0xbf784ffc)
К сожалению, я до сих пор новые для быстрой и 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 (анимированный: Bool)' я не мог найти, где вы объявили свойство 'selectedName'. Вы опустили какой-то из своих кодов или сделали это намеренно? – Leviathlon
Кроме того, «Люди» не являются жизнеспособным именем класса, люди склонны использовать существительные-одиночки для имен классов, так как это не класс мешков. «Человек» - это путь. – Leviathlon
ой, извините ... это должно было быть pickerSelectedName. Я просто обновил, хорошо нахожу. – sMk