如何在Swift中从数组输出日期?

时间:2015-08-09 16:31:00

标签: ios arrays xcode swift nsdate

我正在制作一个简单的计划程序应用程序,它会在事件发生的特定时间向用户发送通知。

我已经设置了一个表来存储数据,我将各个值存储在数组中。

我遇到输出我存储在数组中的NSDates的问题。

import UIKit


extension NSDate {

convenience init(dateString:String, format:String="h-mm a") {
    let formatter = NSDateFormatter()
    formatter.timeZone = NSTimeZone.defaultTimeZone()
    formatter.dateFormat = format
    let d = formatter.dateFromString(dateString)
    self.init(timeInterval:0, sinceDate:d!)
}

class MedicineTableViewController: UITableViewController {

//MARK Properties

var medicines = [Medicine]()



override func viewDidLoad() {
    super.viewDidLoad()

    loadSampleMedicine()
 }

 func loadSampleMedicine() {

    let medicine1 = Medicine(name: "Inhaler", time1: NSDate(dateString: "08:00 a"), time2: NSDate(dateString: "10:00 a"), time3: NSDate(dateString: "02:00 p"), time4: NSDate(dateString: "06:00 p"), time5: NSDate(dateString: "10:00 p"))
    medicines.append(medicine1!)
}

// MARK: - Table view data source

override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return medicines.count

}




override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "MedicineTableViewCell"
    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! MedicineTableViewCell
    let medicine = medicines[indexPath.row]

    cell.nameLabel.text = medicine.name
    cell.takeAt.text = "Take At:"
    cell.time1Label.text = medicine.time1
    cell.time2Label.text = medicine.time2
    cell.time3Label.text = medicine.time3
    cell.time4Label.text = medicine.time4
    cell.time5Label.text = medicine.time5


    return cell
}

这会返回错误“无法将'NSDate'的值赋给String类型的值?”

有没有办法将这些NSDates转换为字符串?

我已经提出了一些其他可能的解决方案,但它涉及重新整理整个应用程序,所以我希望尽可能避免使用它们。

我可能的解决方案是将用户输入的数据返工为pickerView,其中有3列,其中一列是数字01到12,第二节是00到59,第三点是上午和下午。然后获取生成的整个字符串并将其存储在数组中。这将允许我轻松打印出来,因为它只是一个存储的字符串。然后,当我进入制作通知系统的阶段时,我可以使用“dateString”函数将字符串转换为日期,然后从中编写通知。

总的来说,我想知道我是否能够打印出存储在我的阵列中的NSDates,或者如果我的可能的解决方案能够正常工作那么?

感谢。

1 个答案:

答案 0 :(得分:1)

您可以使用NSDateFormatter。有一个名为stringFromDate的函数。这是一个例子。

var date = NSDate() //Or whatever your date is

var stringDate = NSDateFormatter().stringFromDate(date)