无论如何,从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我的代码示例,但是如果我对这个问题的诊断是正确的,它们应该是正确的。