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

How do I store dates in an array in swift?

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

这是我的数据模型:

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
        }
    }
}

在我的 table 视图控制器中,我正在尝试创建示例数据。

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) 并认为我可以这样定义我的时间,但这也返回错误

"Cannot find an initializer for type 'NSDate' that accepts an argument list of type '(dateString: String)'"

谁能帮我解释一下这里出了什么问题,我只是错误地格式化了 NSDate 还是我的代码存在潜在问题?

尝试更改此行:

var data = [Data]()

进入这一行:

var data = [NSDate]()

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

最好使用 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)