如何在swift中将日期存储在数组中?

时间:2015-08-06 20:08:24

标签: ios swift nsdate

我正在制作一个基本的计划风格的应用程序,它从用户那里获取日期输入,然后在表格中表示它。我已经创建了我的数据模型,并且我正在尝试添加一些示例数据来测试模型。

这是我的数据模型:

import UIKit

class Data {
    var name: String
    var time1: NSDate
    var time2: NSDate
    var time3: NSDate
    var time4: NSDate
    var time5: NSDate

    init?(name: String, time1: NSDate, time2: NSDate, time3: NSDate, time4: NSDate, time5: NSDate) {
        self.name = name
        self.time1 = time1
        self.time2 = time2
        self.time3 = time3
        self.time4 = time4
        self.time5 = time5

        if name.isEmpty {
            return nil
        }
    }
}

在我的表视图控制器内部,我正在尝试创建示例数据。

import UIKit

class MedicineTableViewController: UITableViewController {
    //MARK Properties
    var data = [Data]()

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    func loadSampleData() {
        let data1 = Data(name: "Example", 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"))

        Data += [data1]
    }

所以首先我开始尝试以格式" HH:MM"的形式声明我存储的时间。但后来这导致Xcode像整数那样存储我的值,然后我在网上做了一些研究并找到了NSDate(dateString)并且认为我可以像这样定义我的时间但是这也是返回错误

  

"找不到类型' NSDate'的初始化程序。接受类型'(dateString:String)''"

的参数列表

有人可以帮我解释一下这里出错了吗?我只是错误地格式化NSDate或者我的代码是否存在潜在问题?

2 个答案:

答案 0 :(得分:0)

尝试更改此行:

var data = [Data]()

进入这一行:

var data = [NSDate]()

并删除name字符串,我不确定您是否可以存储字符串& NSDate在里面。 告诉我你的结果

答案 1 :(得分:0)

您尝试做的最好是使用NSDateFormatter。 您应该创建日期格式化程序,然后使用datefromString方法创建NSDate。我不知道NSDate(dateString: "<some string")初始值设定项。如果你在一些示例代码中看到这个,有人为此在NSDate上创建了一个扩展,这是可能的。 这样的事情应该有助于获得你的时间价值:

var formatter = NSDateFormatter()
dateFormatter.dateFormat = "MM-dd-yyyy"
let time1 = dateFormatter.dateFromString("August 6, 2015")

您可以创建数据对象。

此外,此行没有意义Data += [data1]您正尝试在此处向该类型添加新元素。相反,您应该使用data.append(data1)