gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 13:58:51 26 4
gpt4 key购买 nike

我的数据库中有一个表。在该表中,我在名为“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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com