【问题标题】:Swift 3 - InputStreamSwift 3 - 输入流
【发布时间】:2016-11-30 01:24:53
【问题描述】:

这段代码在 Swift 2.2 中运行没有任何问题,但是在将我的代码更新到 Swift 3 之后它不再运行了。你们能帮我发现问题吗?完全没有联系。

var inputStream: InputStream?
var outputStream: OutputStream?
func startNetworkCommunicationWithServer(){
    let myApp  = UIApplication.shared.delegate as! AppDelegate
    let server = myApp.myDefaultHost.ip
    let port = 9090

    Stream.getStreamsToHost(withName: server, port: port, inputStream: &inputStream, outputStream: &outputStream)


    inputStream?.delegate = self
    inputStream?.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
    inputStream?.open()

    outputStream?.delegate = self
    outputStream?.schedule(in: RunLoop.current, forMode: RunLoopMode.defaultRunLoopMode)
    outputStream?.open()
    //print(inputStream?.streamStatus ?? "")
}

【问题讨论】:

  • 这是随处可见的可选链接的问题:事情会默默地失败。您应该使用条件绑定来解开inputStreamoutputStream,并处理它们为nil 的情况。
  • 我刚刚尝试了条件绑定,我也没有收到任何错误。我不知道为什么这不起作用。
  • 请显示您的更新代码

标签: sockets stream swift3


【解决方案1】:

将您的委托函数更新为此

func stream(_ aStream: Stream, handle eventCode: Stream.Event) {
   //code
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2020-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多