ios - 面临有关从 swift 中从 sqlite 的特定列中获取数据的问题
问题描述
在使用iOS应用程序时..我在从sqlite获取数据时遇到问题...下面是我用于从数据库中获取数据的代码...
func getQazaNmazdata() -> [QazaDB]
{
var dbData = [QazaDB]()
let qstring = "select Counter from Qaza"
var queryStatement: OpaquePointer? = nil
// 1
if sqlite3_prepare_v2(db, qstring, -1, &queryStatement, nil) == SQLITE_OK {
let data = QazaDB()
while sqlite3_step(queryStatement) == SQLITE_ROW
{
let counter = sqlite3_column_int(queryStatement, 0)
data.counter = Int(counter)
dbData.append(data)
} // while loop end
} // if end
var n:Int = 0
for i in dbData
{
print("Value of Counter at Row " + String(n) + " = " + String(i.counter))
n += 1
}
return dbData
}
我从运行上述代码收到的结果是
Value of Counter at Row 0 = 8
Value of Counter at Row 1 = 8
Value of Counter at Row 2 = 8
Value of Counter at Row 3 = 8
Value of Counter at Row 4 = 8
这些值在行中重复..
解决方案
我怀疑 QazaDB 是一个引用类型(类),因此它只显示最后分配的值。可能您需要更改 while 循环,例如:
while sqlite3_step(queryStatement) == SQLITE_ROW
{
let data = QazaDB()
let counter = sqlite3_column_int(queryStatement, 0)
data.counter = Int(counter)
dbData.append(data)
} // while loop end
您还可以将 QazaDB 更改为结构,这也可以解决问题。
推荐阅读
- node.js - 电子浏览器视图:当我调整嵌入浏览器视图的浏览器窗口大小时显示像素值
- linux - Linux Shell 脚本 - 挂载和备份文件
- c# - 在 MVC VIEW 中使用 AngularJS/AJAX 呈现后端数据
- javascript - 我无法向被警告的人发送 DM
- r - 选择文件后如何清除fileInput
- javascript - 在 HTML 画布上显示许多高分辨率图像(地图平铺)
- esp32 - 如何跟踪 ESP32 中的堆内存泄漏问题?
- python - Django REST JSONParser - 删除换行符?
- mongodb - 如何使用带有 $push 的 ArrayFilter 插入子文档
- javascript - 在缩放时添加元素,D3