ios - 使用 Swift 进行 SQLite 查询的奇怪结果

标签 ios swift sqlite

我的数据库中有一个表。在该表中,我在名为“fechainicio”的列中存储了一个值(它是一个日期,以毫秒为单位):“1424386800000”。

我在我的 Mac 中下载了 SQLite 浏览器来实际检查该值是否已存储,并且它是正确的。

后来,在我的代码中,我使用以下方法检索该值:

var fechaInicio:Int64=Int64(results!.intForColumn("fechainicio"))

当我这样做时,我收到值“-1542342272”。

为什么获取到的值不正确?

我也尝试过

var fechaInicio:Int64=results!.intForColumn("fechainicio").toIntMax()

var fechaInicio=results!.intForColumn("fechainicio")

Int64 不是从数据库检索长值的正确类型吗?

最佳答案

(Objective-)C 中的 int 类型是 32 位整数类型(在 Swift 中映射到 Int32)。这意味着

- (int)intForColumn:(NSString*)columnName;

FMDB 中的方法只能返回 32 位值。该方法最终调用的是SQLite函数

int sqlite3_column_int(sqlite3_stmt*, int iCol);

返回值的低 32 位,不进行任何溢出检查。 正确的解决方案是使用

- (long)longForColumn:(NSString*)columnName;

相反,它在 Swift 中返回 Int64

关于ios - 使用 Swift 进行 SQLite 查询的奇怪结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33239234/

相关文章:

ios - ios swift 中垂直 ScrollView 内的水平 ScrollView 问题

ios - ReactiveCocoa 4 - 延迟和过滤信号事件

ios - 如何阅读本地化的 plist 作为字典?

ios - 使用共享 uiimage 在 View Controller 之间转换

ios - 为什么导航栏在 UIViewWeb 之上? (OBJ-C 初学者)

ios - fatal error : unexpected found nil while unwrapping an optional values

ios - UIBezierPath 没有出现

android - 将iOS coredata导入android sqlite

c - 从 C 程序调试 SQLite 查询

java - 当我想在 sqlite 表中插入一个值时,当我在 editText 中添加引号时,我的应用程序不断崩溃如何解决此问题?