首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Int16发现了nill

Int16发现了nill
EN

Stack Overflow用户
提问于 2018-06-03 03:17:45
回答 1查看 61关注 0票数 -1

此IBAction将打开一个带有两个文本框的UIAlertController。一个盒子代表名字,另一个盒子代表年龄。我正在尝试让用户不必输入他们的年龄,如果他们不想输入。现在,如果他们没有输入他们的年龄,应用程序就会崩溃,因为person.age = Int16(points!)!行显示“线程1:致命错误:在解包可选值时意外发现nil”。我正在尝试使用if else语句停止此操作。但是我错过了什么呢?

代码语言:javascript
复制
   @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)
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-03 03:39:41

为了避免解包问题,我建议你这样做:

代码语言:javascript
复制
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()
        }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50660345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档