如何查看写入功能期间发生的特定错误
How to see what specific error is occurring during write function
如果以前有人问过这个问题,请告诉我,我会删除这个问题。但是,我找不到可以回答这个问题的人。
我目前正在使用这个功能:
https://developer.apple.com/reference/foundation/outputstream/1410720-write
func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
写入流。它 returns 一个整数,根据文档,这个整数用于确定数据是否发送成功:
- 正数表示写入的字节数。
- 0 表示固定长度流并已达到其容量。
- -1表示操作失败;可以使用 streamError 获得有关错误的更多信息。
我对最后一个很好奇。在我的代码中,我得到了这个错误的值,在我的例子中是 -1。我希望看到具体是什么失败了。但是如何从整数中获取错误对象?
所以基本上,我如何得到这个:"more information about the error can be obtained with 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)")
}
}
它打印出错误为零。
InputStream
和 OutputStream
都继承自 Stream
,其中有
一个 streamError
属性:
Returns an NSError object representing the stream error.
简单示例:
let written = stream.write(buffer, maxLength: length)
if written == -1 {
if let error = stream.streamError {
print(stream.streamError?.localizedDescription ?? "Unknown error")
}
显然有些情况下 streamError
在失败后未设置
写,例如如果你没有 open()
流。
如果以前有人问过这个问题,请告诉我,我会删除这个问题。但是,我找不到可以回答这个问题的人。
我目前正在使用这个功能: https://developer.apple.com/reference/foundation/outputstream/1410720-write
func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
写入流。它 returns 一个整数,根据文档,这个整数用于确定数据是否发送成功:
- 正数表示写入的字节数。
- 0 表示固定长度流并已达到其容量。
- -1表示操作失败;可以使用 streamError 获得有关错误的更多信息。
我对最后一个很好奇。在我的代码中,我得到了这个错误的值,在我的例子中是 -1。我希望看到具体是什么失败了。但是如何从整数中获取错误对象?
所以基本上,我如何得到这个:"more information about the error can be obtained with 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)")
}
}
它打印出错误为零。
InputStream
和 OutputStream
都继承自 Stream
,其中有
一个 streamError
属性:
Returns an NSError object representing the stream error.
简单示例:
let written = stream.write(buffer, maxLength: length)
if written == -1 {
if let error = stream.streamError {
print(stream.streamError?.localizedDescription ?? "Unknown error")
}
显然有些情况下 streamError
在失败后未设置
写,例如如果你没有 open()
流。