Обновление существующего элемента в словаре ChatModel из снимка Firestore - PullRequest
1 голос
/ 28 января 2020

Я хочу показать обзор в TableView всех существующих чатов (Name, LastMessage) для определенного пользователя c.

Прямо сейчас я добавляю новый элемент в мой TableView, который, очевидно, неправильно, вместо этого я хочу обновить существующий элемент по его ключу "ChatId"

Это моя модель:

class ChatModel {

var chatOwnerId: String?
var chatPartnerId: String?
var createdDate: Timestamp?
var chatId: String?
var lastMessage: String?
var lastMessageDate: Timestamp?

init(dictionary: [String: Any]) {
    chatOwnerId = dictionary["chatOwnerId"] as? String
    chatPartnerId = dictionary["chatPartnerId"] as? String
    createdDate = dictionary["createdDate"] as? Timestamp
    chatId = dictionary["chatId"] as? String
    lastMessage = dictionary["lastMessage"] as? String
    lastMessageDate = dictionary["lastMessageDate"] as? Timestamp
    }
}

Как добавить данные в мою модель:

func loadChatOverviewNew(currentUser: String) {
    ChatApi.shared.observeChatOverviewNew(currentUser: currentUser) { (chatOverview) in
        self.chats.insert(chatOverview, at: 0)            
        self.chatTableView.reloadData()
    }
}

Как я могу обновить свои "чаты", когда я получаю новый снимок, вместо того, чтобы добавлять / вставлять его?

1 Ответ

0 голосов
/ 28 января 2020

Чтобы обновить существующий элемент, найдите этот элемент в массиве, вызвав ``, а затем обновите его.

Что-то вроде:


ChatApi.shared.observeChatOverviewNew(currentUser: currentUser) { (chatOverview) in
    if let index = self.chats.firstIndex(where: { $0.chatId == chatOverview.chatId }) {
        self.chats[index] = chatOverview
    }
    else {
        self.chats.insert(chatOverview, at: 0)            
    }
    self.chatTableView.reloadData()
}

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