Sqlite - 如何在 Swift 中检索 DATETIME 字段?

Sqlite - how to retrieve a DATETIME field in Swift?

我正在尝试使用以下代码从 SQLite 数据库中检索名为 TIMESTAMP 的 DATETIME 字段:

let dateFormatter = NSDateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
var d1: NSDate  = NSDate()
if getData.dictLocations["TIMESTAMP"] != nil {    
    d1 = dateFormatter.dateFromString(getData.dictLocationsNames["TIMESTAMP"]!)!
    } else {
    dateCreatedLabel.text = "FAILED"
} 

问题似乎源于getData只有两个选项:

getData.dictLocation which is <String, Double> or
getData.dictLocationNames which is <String, String>

那么我该如何提取日期呢?不用说示例代码总是显示,"FAILED".

有什么想法吗?我正在使用 FMDB。

这取代了我今天早些时候提出的一个类似问题,该问题过于宽泛,现已删除。

当您将 NSDate 对象作为参数传递给 FMDB 中的 executeQueryexecuteUpdate 时,它会为您进行必要的转换。您根本不必(也不应该)使用 NSDateFormatter。让 FMDB 为您处理。

例如:

if !db.executeUpdate("create table foo (bar text, transactionTimestamp text)", withArgumentsInArray: nil) {
    println(db.lastErrorMessage())
}

if !db.executeUpdate("insert into foo (bar, transactionTimestamp) values (?, ?)",  withArgumentsInArray: ["baz", NSDate()]) {
    println(db.lastErrorMessage())
}

if let rs = db.executeQuery("select bar, transactionTimestamp from foo", withArgumentsInArray: nil) {
    while rs.next() {
        let bar       = rs.stringForColumn("bar")
        let timestamp = rs.dateForColumn("transactionTimestamp")

        println("bar = \(bar); timestamp = \(timestamp)")
    }
    rs.close()
} else {
    println(db.lastErrorMessage())
}