使用UIDatePicker、Swift iOS设置年龄限制
我想设置年龄限制,当我选择出生日期时,如果年龄小于18岁,那么我打印一个错误使用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
@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。:)我想他能找到答案,但你是对的。;)但我要把支票倒过来。