Вот как я читаю данные:
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 к моей существующей модели?