如果以前曾问过这个问题,请告诉我,我将删除这个问题。但是,我找不到答案。

我目前正在使用此功能:
https://developer.apple.com/reference/foundation/outputstream/1410720-write

func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int

写入流。它返回一个整数,根据文档,此整数用于确定数据是否成功发送:
  • 正数表示写入的字节数。
  • 0表示固定长度的流并已达到其容量。
  • -1表示操作失败;可以使用streamError获得有关该错误的更多信息。

  • 我对最后一个很好奇。在我的代码中,我得到了此错误的值,在我的情况下为-1。我希望看到具体失败的内容。但是,如何从整数获取错误对象?

    因此,基本上,如何获得此信息:“可以使用streamError获得有关错误的更多信息。”

    谢谢。

    编辑:

    首先,感谢您的回答。但是,我最终使用了以下代码:
        for buffer in buffers {
            let output = outputStream?.write((buffer.mData?.load(as: UnsafePointer<UInt8>.self))!, maxLength: Int(buffer.mDataByteSize))
    
            if output == -1 {
                let error = outputStream?.streamError
                print("\(#file) > \(#function) > Error: \(error?.localizedDescription)")
            }
        }
    

    而且打印出来的错误是零。

    最佳答案

    InputStreamOutputStream都从Stream继承,后者具有
    streamError 属性:



    简单的例子:

    let written = stream.write(buffer, maxLength: length)
    if written == -1 {
        if let error = stream.streamError {
        print(stream.streamError?.localizedDescription ?? "Unknown error")
    }
    

    显然,在某些情况下,失败后未设置streamError写,例如如果您未open()流。

    09-07 10:25