2017-09-08 21 views
0

je l'ai déjà vérifié d'autres solutions, mais rien works.I besoin de frapper un service après chaque 4sec donc je me sersL'appel d'une méthode toutes les 4 secondes mais tableview ne se charge pas entre-temps?

var timer = NSTimer.scheduledTimerWithTimeInterval(4.0, target: self, selector: #selector(self.hitServiceUserChatMessageList), userInfo: nil, repeats: true) 

Dans ce HitServiceUserChatMessageList je Rechargement mon tableView. Je suis en mesure de frapper le service après tous les 4sec mais tableview ne montre rien. Il devient vide.

code

pour HitServiceUserChatMessageList

func hitServiceUserChatMessageList() 
{ 
    //Start loader 
    spinner.startAnimation(nil) 
    spinner.hidden=false 

    //Hit service for login 
    let userName = GatyServiceManager.getValueForKey(Constants.key_UserEmailName) as! String 
    let sessionID = GatyServiceManager.getValueForKey(Constants.Key_SessionId) as! String 
    let userId = GatyServiceManager.getValueForKey(Constants.Key_SelectedUserForChat) as! String 

    GatyServiceManager.sharedInstance().hitServiceUserMessageForChat(userName, sessionId: sessionID, userId:userId) 
    { (success, error) in 
     if error == nil 
     { 
      self.spinner.stopAnimation(nil) 
      self.spinner.hidden=true 
      self.array_ChatMessages.removeAllObjects() 
      self.array_ChatMessages = GatyServiceManager.sharedInstance().array_allChats 

      self.tableViewChat.reloadData() 
      self.tableViewChat.scrollRowToVisible(self.array_ChatMessages.count - 1) 
     } 
     else 
     { 
      GatyServiceManager.sharedInstance().showAlertWithMsg(Constants.MSG_InvalidLogin) 
      self.spinner.stopAnimation(nil) 
      self.spinner.hidden=true 
      return 
     } 
    } 
} 
+0

Appelez-vous 'tableView.reloadData'? – the4kman

+0

Montrez-nous 'hitServiceUserChatMessageList'. – Willeke

+0

@Willeke J'ai mis à jour le code. Vérifiez s'il vous plaît. –

Répondre

0

J'obtenu la réponse. En fait, j'avais deux tableaux self.array_ChatMessages et GatyServiceManager.sharedInstance(). Array_allChats.

GatyServiceManager.sharedInstance(). Array_allChats recevait des données du serveur, puis l'assignait à self.array_ChatMessages.

Une fois, j'exécute les deux commandes ci-dessous. Il supprime les données des deux tableaux car ils se réfèrent tous les deux au même emplacement de mémoire.

self.array_ChatMessages.removeAllObjects() 
     self.array_ChatMessages = GatyServiceManager.sharedInstance().array_allChats 
+0

Vous pouvez supprimer 'self.array_ChatMessages.removeAllObjects()'. Lorsque vous attribuez une nouvelle valeur à 'self.array_ChatMessages', l'ancienne valeur va être désallouée. – Willeke

+0

Oui c'est ce que j'ai fait maintenant. Merci. S'il vous plaît upvote mes ans si c'est correct –