Исключение выбрасывает ячейки - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь загрузить информацию в табличное представление и получаю исключение, потому что некоторая информация в ячейке не инициализируется, когда я выполняю преобразование в нее. и это мой код:

Код для представления, содержащего tableView:

    private func populateActiveChats()
        {
            let loggedOnUserID = Auth.auth().currentUser?.uid
            let ref = Constants.refs.databaseChatsLite.child(loggedOnUserID!)

            ref.observe(.value, with:
                    { (snapshot) in

                        for child in snapshot.children.allObjects as! [DataSnapshot]
                        {

                            if (self.chatsDictionary.keys.contains(child.key) == false)
                            {
                                let chatValueDictionary = child.value as? NSDictionary
                                self.AddChatToCollections(chatAsDictionary: chatValueDictionary)
                                self.DispatchQueueFunc()
                            }


                        }
                })
        }


    func AddChatToCollections(chatAsDictionary: NSDictionary!)
            {
                if chatAsDictionary == nil
                {
                    return
                }
                let contactName = 

chatAsDictionary[Constants.Chat.ChatRoomsLite.CONTACT_NAME] as! String
            let newMsgs = chatAsDictionary[Constants.Chat.ChatRoomsLite.NUM_OF_UNREAD_MSGS] as! Int
            let contactID = chatAsDictionary[Constants.Chat.ChatRoomsLite.CONTACT_ID] as! String

            let chatToAdd = PrivateChatLiteObject(chattingWith: contactName, ContactID: contactID, unreadMessages: newMsgs, LastMSG: "")


            chatsDictionary[contactID] = chatToAdd
            chatsIndex.append(contactID)
        }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
        {
            let cell = ChatsTableView.dequeueReusableCell(withIdentifier: "chat_room_cell", for: indexPath) as! PrivateChatUITableViewCell


            let indexedID = chatsIndex[indexPath.row]
            cell.ContactName.text = chatsDictionary[indexedID]?.GetContactName()

            cell.ContactID = chatsDictionary[indexedID]?.GetContactID()
            return cell

        }

И в моем PrivateChatUITableViewCell:

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
        {
            let cell = ChatsTableView.dequeueReusableCell(withIdentifier: "chat_room_cell", for: indexPath) as! PrivateChatUITableViewCell

            //cell.ContactImageView = UIImageView.loadImageUsingUrlString(contactImg)
            let indexedID = chatsIndex[indexPath.row]
            cell.ContactName.text = chatsDictionary[indexedID]?.GetContactName()

            cell.ContactID = chatsDictionary[indexedID]?.GetContactID()
            //cell.PopulateCell()
            return cell

        }

public func PopulateCell()
    {
        let currentID = Constants.refs.currentUserInformation?.uid
        Constants.refs.databaseChatsLite.child(currentID!).child(ContactID!).observeSingleEvent(of: .value, with: {(snapshot) in ...})

}

Код падает при достижении Constants.refs.databaseChatsLite.child(currentID!).child(ContactID!)

строка, потому что ContactID не инициализирован.

Это вызывается при приведении ячейки к PrivateChatUITableViewCell

Я не изменил свой код, и он работал, поэтому я не уверен, что изменилось или что я делаю неправильно. Где мой код должен быть исправлен?

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