无论如何要从 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 方法返回一些东西吗?的主要内容,如果未能解决你的问题,请参考以下文章

用于 swift4 ios 的 Socket.io

应用程序进入后台时如何保持 Swift Socket IO 运行?

Socket.IO-Client-Swift 未连接到 nodejs socket.io 服务器

socket.io-client-swift 包解析在 Xcode13 Beta 项目中失败

Socket.IO 错误:zlib 没有这样的模块(Swift 3,Xcode 8.3)

Socket.io swift客户端自动多次重新连接