反正有没有从Swift中的socket.io方法返回一些东西?

时间:2016-01-29 18:46:32

标签: ios node.js swift sockets socket.io

我构建一个socket方法,服务器端将JSON数组传递给客户端。

之后,我想传递数据以供其他功能使用。

但Swift中的socket方法限制我这样做,因为它是一个void函数

这是方法的示例 code

没有什么可以从闭包{}中逃脱,似乎我只能在套接字方法中进行操作

是否有任何解决方法可以操作套接字方法,以便从该范围中获取数据?

1 个答案:

答案 0 :(得分: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中测试我的代码示例,但如果我对此问题的诊断是正确的,那么它们应该是正确的。