首页 > 解决方案 > 将 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 结果附加到现有模型?

标签: swiftsqlitemodel

解决方案


推荐阅读