我正在尝试使用以下代码从SQLite DB中检索名为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>
那我怎么拉日期呢?毋庸置疑,示例代码始终显示,&#34; FAILED&#34;。
有什么想法吗?我正在使用FMDB。
这取代了我今天早些时候提出的类似问题,现在已经删除了,这个问题太宽泛了。
答案 0 :(得分:1)
当您将NSDate
对象作为参数传递给FMDB中的executeQuery
或executeUpdate
时,它会为您进行必要的转换。您根本不必(也不应该)使用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())
}