This question already has answers here:
Calculate age from birth date
(4个答案)
7个月前关闭。
我正在尝试编写一个代码,从分配给文本字段的日期选择器计算年龄。我得到了正确的日期很好,它通过了打印测试。但是,在尝试使dateComponents工作时,出现了“对成员dateComponents(:from:to:)”的不明确引用”错误。--这与一个stackoverflow通知我的代码不同,我正试图使用datepicker到达那里。--
我在网上到处寻找解决方案,但我似乎过不了这一关。你能帮忙吗?
-完全初学者
@objc func dateChanged(datePicker: UIDatePicker) {

    let myCalendar = Calendar(identifier: .gregorian)
    let dmy = myCalendar.dateComponents([.day, .month, .year], from: Date())

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd/MM/yyyy"

    inputTextField.text = dateFormatter.string(from: datePicker.date)

    let birthdayDate = dateFormatter.string(from: datePicker.date)
    print(birthdayDate)

    let now = NSDate()
    let ageComponents = myCalendar.dateComponents(.year, from: birthdayDate, to: now) //Ambiguous reference to member 'dateComponents(_:from:to:)'
    let age = ageComponents.year!

    label.text = age

    view.endEditing(true)

}

最佳答案

你的代码有一些问题
您应该在Swift中使用Date,而不是NSDate
birthdayDate是一个String,但是from:参数需要是Date的一个实例
组件参数需要是一个集合。
纠正这些问题可以:

@objc func dateChanged(datePicker: UIDatePicker) {

    let birthdayDate = datePicker.date
    let myCalendar = Calendar(identifier: .gregorian)
    let dmy = myCalendar.dateComponents([.day, .month, .year], from: Date())

    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "dd/MM/yyyy"

    inputTextField.text = dateFormatter.string(from: birthdayDate)

    let now = Date()
    let ageComponents = myCalendar.dateComponents([.year], from: birthdayDate, to: now)
    let age = ageComponents.year!

    label.text = "\(age)"

    view.endEditing(true)

}

关于ios - 计算年龄:DateComponents上对成员的含糊引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55782320/

10-10 21:33