现在我正在学习Swift并制作一个典型的ToDo应用程序。 我找到了一个函数将日期数据从UIDatePicker转换为String,这是我的ViewController代码块:
@IBAction func dateToString(sender: UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
var strDate = dateFormatter.stringFromDate(myDatePicker.date)
return ()
}
但问题是我无法在我的应用中访问此函数的字符串结果 我在每个tableViewCell中有2个标签,一个简单的标签文本数据,另一个是日期选择器的日期数据(也应该是一个字符串):
@IBOutlet weak var saveButton: UIBarButtonItem!
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if saveButton === sender {
let name = nameTextField.text ?? ""
let date =
item = Item (name: name, date: date)
}
}
override func viewDidLoad() {
super.viewDidLoad()
if let item = item {
nameTextField.text = item.name
= item.date
}
}
请帮助,我应该写什么
let date =
和
= item.date
定义日期? 我试过调用函数let date = dateToString;但它对我不起作用。 非常感谢这里的任何帮助!
答案 0 :(得分:0)
你可以改变你的功能,如
var strDate:String = String()
@IBAction func dateToString(sender: UIDatePicker) {
var dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
strDate = dateFormatter.stringFromDate(myDatePicker.date)
}
然后你可以使用
let date = strDate
答案 1 :(得分:0)
首先,你的dateToString函数不应该是IBAction
。它们用于由接口项直接调用并在Interface Builder中连接的方法。你想要的是一个常规函数,它接受一个日期并返回一个格式化的字符串,如下所示:
func dateToString(date: NSDate) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
return dateFormatter.string(from: date)
}
现在,当您想要一个格式化的日期字符串时,您可以调用它并将其传递给您想要格式化的Date
。看起来您使用UIDatePicker
来指定日期,因此您需要在视图控制器中设置@IBOutlet
(如果您还没有这样做),以便您可以访问宾语。为此,控制 - 从日期选择器拖动到视图控制器源,然后命名插座。它将在您的源代码中生成代码:
@IBOutlet weak var myDatePicker: UIDatePicker!
现在您可以在班级的其他地方引用datePicker。因此,您可以将日期作为格式化字符串获取,如下所示:
let dateString = dateToString(date: myDatePicker.date)
然后,您可以将此字符串传递给Item
,或将其设置为字段或标签的文本。
答案 2 :(得分:0)
这就是我弄清楚的:
func dateToString (date: NSDate) -> String {
let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "dd-MM-yyyy HH:mm"
return dateFormatter.stringFromDate(date)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if saveButton === sender {
let name = nameTextField.text ?? ""
let date = dateToString (myDatePicker.date) ?? ""
item = Item (name: name, date: date)
}