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

标签 swift sqlite nsdate fmdb

我正在尝试使用以下代码从 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>

那么我该如何提取日期呢?不用说示例代码总是显示“失败”。

有什么想法吗?我正在使用 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())
}

关于swift - Sqlite - 如何在 Swift 中检索 DATETIME 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31224239/

相关文章:

swift - 更改多个 CAShapeLayer 的绘制顺序

ios - 如何修复上下文闭包类型 '((String, JSON), (String, JSON)) -> Bool' 需要 2 个参数,但在闭包主体中使用了 1 个?

iphone - sqlite中的数据库被锁定错误

swift - 在 Swift 中将以毫秒为单位的 NSDate 时间转换为 Int32 和 Int64

ios - [NSDate 日期] 的时区是什么?

swift - 如何在 Swift 中设置定时器

ios - 使用 Apple Mail 应用程序 Swift 3 时具有 HTML 正文

swift - 如何在 AlamofireObjectMapper 的 keyPath 后面获取对象数组?

python-3.x - 将字节数据插入 Sqlite 前不带 b'

时间戳中两个表的mysql重叠