Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UILabel.text从Socket.io发出的更新不同步_Ios_Swift_Socket.io_Uilabel - Fatal编程技术网

Ios UILabel.text从Socket.io发出的更新不同步

Ios UILabel.text从Socket.io发出的更新不同步,ios,swift,socket.io,uilabel,Ios,Swift,Socket.io,Uilabel,我用socket.io实现了一个简单的node.js服务器。服务器每隔一段时间发出一条消息。iOS客户端从服务器接收socket.io消息并处理数据,但随后对UILabel.text的更新不同步。例如,客户端可以接收以下值[1,2,3,4,5],值1在服务器发出2之前不会显示,值2在服务器发出3之前不会显示,依此类推 以下是iOS代码: @IBOutlet weak var testLbl: UILabel! let manager = SocketManager(socketURL: URL

我用socket.io实现了一个简单的node.js服务器。服务器每隔一段时间发出一条消息。iOS客户端从服务器接收socket.io消息并处理数据,但随后对UILabel.text的更新不同步。例如,客户端可以接收以下值[1,2,3,4,5],值1在服务器发出2之前不会显示,值2在服务器发出3之前不会显示,依此类推

以下是iOS代码:

@IBOutlet weak var testLbl: UILabel!

let manager = SocketManager(socketURL: URL(string: "https://localhost:3000")!, config: [.log(true), .compress])
var socket:SocketIOClient?

override func viewDidLoad() {
    socket = manager.socket(forNamespace: "/namespace")
    socket?.joinNamespace()
    addHandler()
    socket?.connect()
}


func addHandler () {
    socket.on("incoming", callback: { (dataArray, ack) in
        var responseData = dataArray[0] as? [[String:String]]
        var responesDataIter = responseData![0].makeIterator()
        var xx: String = "" 
        while let xx = responesDataIter.next() {
            item = xx.value
        }

        self.testLbl.text! = item
    })

任何指针?

实现确认功能,除非您从客户端获得确认,否则不要再次发出。您好,Sharad,感谢您的回复,但我认为实现确认功能不会更快地更新UILabel,因为客户端已经具有该值。我认为这是一个线程问题,所以我在代码中添加了DispatchQueue.main.async,仍然得到了相同的结果。