Int16 найден ноль - PullRequest
       6

Int16 найден ноль

0 голосов
/ 02 июня 2018

Этот IBAction вызывает UIAlertController с двумя текстовыми полями.Одна коробка для имени и одна для возраста.Я пытаюсь сделать так, чтобы пользователю не нужно было указывать свой возраст, если он этого не хочет.прямо сейчас, если они не вводят свой возраст, приложение вылетает прямо в строке person.age = Int16(points!)!, говорящей «Поток 1: Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения».Я пытаюсь использовать оператор if else, чтобы остановить это.Чего же мне не хватает?

   @IBAction func addRowBtn(_ sender: Any) {
        let alert = UIAlertController(title: "Add Person", message: nil, preferredStyle: .alert)
        alert.addTextField { (textField) in
            textField.placeholder = "Task"
        }
        alert.addTextField { (textField) in
            textField.placeholder = "Points"
            textField.keyboardType = .numberPad
        }
        let action = UIAlertAction(title: "post", style: .default) { (_) in
            let name = alert.textFields?.first!.text!
            let age = alert.textFields?.last!.text!
            if name != nil && age != nil {
                let person = Person(context: PersistenceServce.context)
                person.name = name
                person.age = Int16(age!)!
                PersistenceServce.saveContext()
                self.people.append(person)
                self.table.reloadData()

            }
             if name != nil && age == nil {
                let person = Person(context: PersistenceServce.context)
                person.name = name
                person.age = 0
                PersistenceServce.saveContext()
                self.people.append(person)
                self.table.reloadData()
            }
        }
        alert.addAction(action)
        present(alert, animated: true, completion: nil)
    }
}

1 Ответ

0 голосов
/ 02 июня 2018

Во избежание проблем с развертыванием, я бы посоветовал вам сделать это так:

let action = UIAlertAction(title: "post", style: .default) { (_) in
        if let ageString = alert.textFields?.last?.text,
            let age = Int16(ageString),
            let name = alert.textFields?.first?.text {
            let person = Person(context: PersistenceServce.context)
            person.name = name
            person.age = age
            PersistenceServce.saveContext()
            self.people.append(person)
            self.table.reloadData()
        } else if let name = alert.textFields?.first?.text {
            let person = Person(context: PersistenceServce.context)
            person.name = name
            person.age = 0
            PersistenceServce.saveContext()
            self.people.append(person)
            self.table.reloadData()
        }
}
...