使用UIDatePicker、Swift iOS设置年龄限制

使用UIDatePicker、Swift iOS设置年龄限制,ios,swift,xcode,Ios,Swift,Xcode,我想设置年龄限制,当我选择出生日期时,如果年龄小于18岁,那么我打印一个错误 @objc func handleDatePicker(sender: UIDatePicker) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "dd/MMMM/yyyy" dateBirthday.text = dateFormatter.string(from: sender.d

我想设置年龄限制,当我选择出生日期时,如果年龄小于18岁,那么我打印一个错误

 @objc func handleDatePicker(sender: UIDatePicker) {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "dd/MMMM/yyyy"

        dateBirthday.text = dateFormatter.string(from: sender.date)

        if let date = dateFormatter.date(from: dateBirthday.text!) {
            let age = Calendar.current.dateComponents([.year], from: date, to: Date()).year!
            print(age)  //
            self.age.text = "You are \(age) age"
            `continue`.isEnabled = true
        } else {

            let date = dateFormatter.date(from: dateBirthday.text!)
            let age = Calendar.current.dateComponents([.year], from: date!, to: Date()).year!
            print(age)
          if age < 18 {

                self.age.text = "Error you are \(age)"
            }
    }
    }
@objc func handleDatePicker(发送方:UIDatePicker){
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“dd/MMMM/yyyy”
dateBirthday.text=dateFormatter.string(发件人:sender.date)
如果让date=dateFormatter.date(从:dateBirthday.text!){
让age=Calendar.current.dateComponents([.year],from:date,to:date()).year!
印刷品(年龄)//
self.age.text=“你是\(年龄)年龄”
`continue`.isEnabled=true
}否则{
让date=dateFormatter.date(从:dateBirthday.text!)
让age=Calendar.current.dateComponents([.year],from:date!,to:date()).year!
印刷品(年龄)
如果年龄<18岁{
self.age.text=“错误您是\(年龄)”
}
}
}

您可以这样做:

    if let date = dateFormatter.date(from: dateBirthday.text!) {
        let age = Calendar.current.dateComponents([.year], from: date, to: Date()).year!

        if age >= 18 {
            print(age)
            self.age.text = "You are \(age) age"
            continue.isEnabled = true
        } else {
            self.age.text = "Error you are \(age)"
        }
    }

将日期和年龄格式化程序移出if语句。通常,如果if语句的两个分支中有相同的代码,则可以在代码之前或之后提取该代码

if let date = dateFormatter.date(from: dateBirthday.text!) {
    let age = Calendar.current.dateComponents([.year], from: date!, to: Date()).year!
    print(age)

    if age < 18 {
       self.age.text = "Error you are \(age)"
    } else {
       self.age.text = "You are \(age) age"
       `continue`.isEnabled = true
    }
}
如果让date=dateFormatter.date(from:datebirth.text!){
让age=Calendar.current.dateComponents([.year],from:date!,to:date()).year!
印刷品(年龄)
如果年龄<18岁{
self.age.text=“错误您是\(年龄)”
}否则{
self.age.text=“你是\(年龄)年龄”
`continue`.isEnabled=true
}
}

您的代码有什么问题?无论如何,您应该获得日期/年龄,然后应用if/else(当年龄小于18岁时,错误不会出现:你写了一个
if-let/else
测试。你的代码在哪里?它通过了if-let吗?为什么它应该通过,或者为什么它不应该通过。然后阅读我之前评论的第二行。我看到@rbaldwin和我得出了几乎相同的答案……除了你的=18
>18
意味着18将落入错误声明。OP希望过滤小于18。:)我想他能找到答案,但你是对的。;)但我要把支票倒过来。