每隔4秒调用一次方法但是tableview不会同时加载?

时间:2017-09-08 08:10:59

标签: swift macos cocoa nstimer

我已经检查了其他解决方案,但没有任何效果。我需要在每4秒后点击一次服务,所以我正在使用

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

在这个HitServiceUserChatMessageList中我正在重新加载我的tableView。我能够在每4秒钟后启动服务但是tableview没有显示任何内容。它变得空白。

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

1 个答案:

答案 0 :(得分:0)

我得到了答案。实际上,我有两个数组self.array_ChatMessages和GatyServiceManager.sharedInstance()。array_allChats。

GatyServiceManager.sharedInstance()。array_allChats从服务器获取数据,然后将其分配给self.array_ChatMessages。

有一次,我执行以下两个命令,它从两个数组中删除数据,因为它们都引用相同的内存位置。

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