You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Sqlite.swift的Binding转换为Swift原始类型?

解决Sqlite.swift中Binding转Swift原始类型的问题

你遇到的错误是因为row[0]返回的是any Binding?类型,无法直接强制转换为Int64。可以通过以下几种方式解决:

方法1:使用get方法安全获取值

Sqlite.swift的Row提供了get方法来处理类型转换,你可以指定要转换的类型:

for row in try db.prepare("select * from table") {
    // 确定列类型为Int64时直接获取
    let t = try row.get(0) as Int64
    // 或者用可选绑定避免转换失败崩溃
    if let t = try row.get(0) as? Int64 {
        // 在这里使用t
    }
}

方法2:使用类型安全的表结构定义(推荐)

Sqlite.swift的核心优势是类型安全,先定义表和列的表达式,就能直接获取对应类型的值,避免下标操作和类型转换问题:

// 先定义表和对应列
let targetTable = Table("table")
let targetColumn = Expression<Int64>("column_name") // 替换为你的实际列名

// 查询并直接获取强类型值
for row in try db.prepare(targetTable) {
    let t = row[targetColumn] // 直接得到Int64类型
}

方法3:直接使用可选类型转换

如果不想用get方法,也可以用可选类型转换替代强制转换,解决编译错误:

for row in try db.prepare("select * from table") {
    if let t = row[0] as? Int64 {
        // 使用t
    }
}

内容的提问来源于stack exchange,提问作者egor10_4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 16:03:15