У меня есть представление DatePicker. Когда пользователь щелкает UITextField, он показывает DatePicker, который пользователь, конечно, может выбрать для даты.
Проблема в том, что когда я пытаюсь преобразовать строку в объект даты, я ничего не получаю, поэтому я не могу сравнить две даты, например.
func checkDate(){
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: Locale.current.identifier)
dateFormatter.timeZone = .current
dateFormatter.dateFormat = "dd/MM/yy"
guard let startDate = mView.startDateTextField.text else { return }
print("DATE: \(startDate)")
guard let startDateFromString = dateFormatter.date(from: startDate) else { return } //I think it returns here.
//Won't get here.
print("DATE: \(startDate)")
guard let endDate = mView.endDateTextField.text else { return }
guard let endDateFromString = dateFormatter.date(from: endDate) else { return }
if startDateFromString.compare(endDateFromString) == ComparisonResult.orderedDescending{
print("Start date cannot be greater than end date.")
}
}
Я попытался отладить, и точка останова доходит до строки startDateFromString, но из нее "выпрыгивает" наружу, так что я думаю, что она не получит Date из строки и вернет.
Я просто не могу понять, почему.
РЕДАКТИРОВАТЬ: Здесь я устанавливаю TextField Text в качестве даты, выбранной из DatePicker.
@objc func datePickerValueChanged(sender: UIDatePicker){
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateTextField.text = dateFormatter.string(from: sender.date)
}