无论如何,从Swift中的socket.io方法返回的东西吗?

我正在构造一个套接字方法,服务器端将传递一个JSON数组到客户端。

之后,我想传递数据来使用其他function。

但是Swift中的套接字方法限制了我这样做,因为它是一个无效函数

这是方法的例子 码

没有任何东西可以从这个闭包中转义出来,而且我似乎只能在socket方法中进行操作

是否有任何解决方法,我可以操纵套接字方法,以便我的数据超出该范围?

我不知道关于socket.io的具体情况,但是如果这是asynchronous操作的经典情况,那么可以将你的socket.io调用包装在一个新的完成处理程序中,例如:

// I suppose the data is of type NSData. func readDataFromSocketIO(completion: (data: NSData) -> ()) { socket.on("connect") { data, ack in // ... completion(data: data) } } 

你用一个尾随的closures来调用它:

 readDataFromSocketIO() { data in // use `data` here } 

如果你想填充一个属性:

 var dataFromSIO: NSData? { didSet { print("We got new data!") } } func populate() { readDataFromSocketIO() { data in self.dataFromSIO = data } } 

当然这些只是一些简单的例子,有很多方法可以做到这一点,你必须适应你自己的类和方法。

另外,请注意,我不是一个socket.io用户,我没有在Xcode中testing我的代码示例,但是如果我对这个问题的诊断是正确的,它们应该是正确的。