swift - 每 4 秒后调用一个方法,但同时 tableview 不加载?

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

最佳答案

我得到了答案。实际上,我有两个数组 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

关于swift - 每 4 秒后调用一个方法,但同时 tableview 不加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111686/

相关文章:

java - 将 Java 运行时嵌入到沙盒 Cocoa Mac 应用程序中

swift 2.0 : Protocol Extension Class Method returning Self

ios - 为什么我不能在 Swift 中使用从一个 UIViewController 传递到另一个(在控制台工作中打印数据)的数据设置标签?

ios - 某些具有特定负载的通知的静默推送通知

ios - CollectionView 未按预期垂直显示

python - tkinter mainloop() 函数将我从我的 mac 中注销

swift - 实现 canClose 的最佳实践(withDelegate :shouldClose:contextInfo:)

eclipse - STS : Failure to create Java Virtual Machine

c# - Xamarin.Mac MVVM 模式的最佳实践

macos - Swift 中的 OS X 应用程序 View 管理