swift - 将 SQLite 查询结果附加到现有模型
问题描述
这就是我读取数据的方式:
func read() -> [ChatModel] {
let queryStatementString = "SELECT * FROM chatoverview;"
var queryStatement: OpaquePointer? = nil
var psns = [ChatModel]()
if sqlite3_prepare_v2(db, queryStatementString, -1, &queryStatement, nil) == SQLITE_OK {
while sqlite3_step(queryStatement) == SQLITE_ROW {
let chatId = sqlite3_column_text(queryStatement, 0)
let partnerId = sqlite3_column_text(queryStatement, 1)
let partnerName = sqlite3_column_text(queryStatement, 2)
let createdDate = sqlite3_column_text(queryStatement, 3)
let lastMessage = sqlite3_column_text(queryStatement, 4)
let lastMessageDate = sqlite3_column_text(queryStatement, 5)
let partnerProfileImage = sqlite3_column_text(queryStatement, 6)
print("read")
print(chatId)
psns.append(ChatModel(dictionary: ["chatId": chatId!, "partnerId": partnerId!, "partnerName": partnerName!, "createdDate": createdDate!, "lastMessage": lastMessage!, "lastMessageDate": lastMessageDate!, "partnerProfileImage": partnerProfileImage!]))
}
}
print(chatId) = "Optional(0x000000010d21fd50)" 的结果,我不确定为什么结果不是字符串。无论如何,在我的 ViewController 中,我试图将此数据附加到我现有的 ChatModel:
import Foundation
import FirebaseFirestore
class ChatModel {
var partnerId: String?
var partnerName: String?
var createdDate: Timestamp?
var lastMessage: String?
var lastMessageDate: Timestamp?
var chatId: String?
var partnerProfileimage: String?
init(dictionary: [String: Any]) {
partnerId = dictionary["partnerId"] as? String
partnerName = dictionary["partnerName"] as? String
createdDate = dictionary["createdDate"] as? Timestamp
chatId = dictionary["chatId"] as? String
lastMessage = dictionary["lastMessage"] as? String
lastMessageDate = dictionary["lastMessageDate"] as? Timestamp
partnerProfileimage = dictionary["partnerProfileimage"] as? String
}
}
我的 ViewController 中的相关代码:
var test = [ChatModel]()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
test = db.read()
print(test.count) <---- 5 Items, correct number, my SQLite file also has the correct data / schema
for x in test {
print(x.lastMessage)
}
这就是问题所在。x.lastMessage 始终为零。
如何将 SQL 结果附加到现有模型?
解决方案
推荐阅读
- html - CSS 媒体查询不适用于任何浏览器
- c# - 当 C++ 代码运行时调用 Thread.Abort 时,如何在 C# 中捕获 ThreadAbortException?
- c# - Blazor 父/子组件未更新
- c++ - 将 int* 传递给 int[][] C/C++
- r - 通过 R 中的 Shiny 在环境中加载和删除数据集
- reactjs - 页面加载时如何使第一个元素 className 处于活动状态?
- python - 如何将pandas数据框中多列的汇总汇总信息作为字符串列表?
- mysql - 将 varchar 时间戳字段转换为实际日期字段
- excel - VBA Excel - 使用部分更改的名称保存文件名
- php - PHP - 根据日期和时间对数组数据进行排序