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

时间:2018-05-06 18:39:21

标签: ios swift xcode

我想设定年龄限制,当我选择出生日期如果年龄小于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)"
            }
    }
    }

2 个答案:

答案 0 :(得分:2)

你可以这样做:

    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)"
        }
    }

答案 1 :(得分:1)

将您的日期和年龄格式化程序移出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
    }
}