2017-10-28 38 views
0

我似乎無法獲得從新用戶發送的新消息或從已經在tableview中的用戶發送的新消息去與大多數消息應用。我已經問這個問題之前,並試圖遵循一個鏈接,有人好心地給我(How do you properly order data from Firebase chronologically)的指示,但我仍然不能得到預期的效果,不管不管我嘗試如何使你的tableView顯示新的或更新的元素在你的tableView頂端PT.2

func getChatsFeed(){ 
//following the links instruction "timeStamp" is suppose help return fireBase children in reverse order. "atValue: time" is a value for the time when my viewDidload. 
    let queryChats = Database.database().reference().queryOrdered(byChild: "timeStamp").queryEnding(atValue: time, childKey: "timeStamp") 

    queryChats.observe(.childAdded) { (snapshot) in 

     if let snapvalue = snapshot.value as? Dictionary<String,Any>, let 
      sender = snapvalue["sender"] as? String, let receiver = 
      snapvalue["receiver"] as? String, let message = snapvalue["messageBody"] as? 
      String, let key = snapvalue["key"] as? String, let timeStamp = snapvalue["timeStamp"] as? String{ 

      let newMessage = FeedMessage(sender: sender, receiver: receiver, messageBody: message, key: key, timeStamp: timeStamp) 

      feedUpdate.append(newMessage) 
      self.chatsTableView.reloadData() 

     } 


    } 
} 

鏈接我收到了很多StackOverflow用戶問題的解決方案,因此我得到了相當多的讚譽,所以也許我弄糟了某些地方,並不完全瞭解所有不同的Firebase方法,這可能就是這種情況。任何指針任何人?

+0

所以在你的表出現在所有新數據? –

+0

沒有這種方法沒有。但其他的方法,我試過了,儘管他們填充我的tableView,他們不會像我想要的那樣將新的/更改過的數據源元素移動到tableView的頂部。 – KarmaDeli

+0

當您打印出來時,它是否被分類? – Torewin

回答

0

與在數據被加載到feedUpdate,你使用的其他方法,只要做到這一點:

chatsTableView.reloadData() 
    let indexPath:IndexPath = IndexPath(row:0, section:0) 
    chatsTableView.scrollToRow(at: indexPath, at: UITableViewScrollPosition .top, animated: true) 
+0

@MM我很抱歉沒有更清楚我的問題,如果新數據改變了我的數據源,如果我得到來自用戶的初始消息,並且如果我從後面接收到來自已與之聊天的用戶。如果你可以在你的iphone上拉動Messages應用程序 - 我必須試着模仿該應用程序中初始TableViewController的行爲。您的回答雖然看起來很有用,但已經成功實現了我的一對一消息VC,它可以模擬在iPhone上的消息應用程序中點擊消息時加載的VC。 – KarmaDeli