无论如何要从 Swift 中的 socket.io 方法返回一些东西吗?
Posted
技术标签:
【中文标题】无论如何要从 Swift 中的 socket.io 方法返回一些东西吗?【英文标题】:Is there anyway to return something from socket.io method in Swift? 【发布时间】:2016-05-07 14:52:31 【问题描述】:我正在构建一个套接字方法,服务器端会将 JSON 数组传递给客户端。
之后,我想将数据传递给其他功能。
但是 Swift 中的 socket 方法限制了我这样做,因为它是一个 void 函数
这是方法的例子
没有什么能从那个闭包 中逃脱,似乎我只能在套接字方法中进行操作
是否有任何解决方法可以让我操纵套接字方法,以便将数据移出该范围?
【问题讨论】:
【参考方案1】:我不具体了解 socket.io,但如果它是异步操作的典型情况,您可以将您的 socket.io 调用包装在一个新的完成处理程序中,例如:
// I suppose the data is of type NSData.
func readDataFromSocketIO(completion: (data: NSData) -> ())
socket.on("connect") data, ack in
// ...
completion(data: data)
你用一个尾随闭包来调用它:
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 中测试我的代码示例,但如果我对这个问题的诊断正确,它们应该是正确的。
【讨论】:
以上是关于无论如何要从 Swift 中的 socket.io 方法返回一些东西吗?的主要内容,如果未能解决你的问题,请参考以下文章
应用程序进入后台时如何保持 Swift Socket IO 运行?
Socket.IO-Client-Swift 未连接到 nodejs socket.io 服务器
socket.io-client-swift 包解析在 Xcode13 Beta 项目中失败