代码之家  ›  专栏  ›  技术社区  ›  Ofri

单元格转换引发异常

  •  0
  • Ofri  · 技术社区  · 6 年前

    我正试图将信息加载到tableView中,但出现了一个异常,因为当我对单元格进行强制转换时,单元格中的某些信息没有初始化。这是我的密码:

    包含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
    
            }
    

        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

    0 回复  |  直到 6 年前