Добавить результат запроса SQLite к существующей модели - PullRequest
0 голосов
/ 03 февраля 2020

Вот как я читаю данные:

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) = "Необязательно (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 всегда равно nil.

Как я могу добавить результат SQL к моей существующей модели?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...