出现空值崩溃的原因可能是在保存日期选择器的值时未进行空值判断。以下是一个示例代码,演示了如何解决这个问题。
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var dateTextField: UITextField!
private var datePicker: UIDatePicker?
override func viewDidLoad() {
super.viewDidLoad()
// 创建日期选择器
datePicker = UIDatePicker()
datePicker?.datePickerMode = .date
datePicker?.addTarget(self, action: #selector(datePickerValueChanged), for: .valueChanged)
// 设置日期选择器为文本框的输入视图
dateTextField.inputView = datePicker
// 创建保存按钮
let saveButton = UIBarButtonItem(title: "保存", style: .plain, target: self, action: #selector(saveButtonTapped))
navigationItem.rightBarButtonItem = saveButton
}
@objc func datePickerValueChanged() {
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd"
dateTextField.text = dateFormatter.string(from: datePicker!.date)
}
@objc func saveButtonTapped() {
// 如果日期文本框为空,则不保存
guard let selectedDate = dateTextField.text, !selectedDate.isEmpty else {
print("日期不能为空")
return
}
// 保存操作
print("保存日期:\(selectedDate)")
}
}
在上述代码中,我们首先创建了一个日期选择器,并将其设置为文本框的输入视图。然后,通过datePickerValueChanged
方法,将选择的日期显示在文本框中。最后,使用saveButtonTapped
方法进行保存操作时,我们使用了可选绑定来判断日期文本框是否为空。如果为空,则不执行保存操作,并打印一条错误信息。
通过这种方式,我们在保存日期选择器的值时就能够避免空值崩溃问题。