如果此問題之前已被詢問,請讓我知道,我將刪除此問題。但是,我無法找到答案。如何查看在寫入功能期間發生了什麼特定錯誤
我目前使用此功能: 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)")
}
}
而且它打印出的錯誤是零。
'outputStream'是什麼樣的流?在寫入之前是否打開()了流? –
@MartinR是的,我忘了打開流。你有沒有看到錯誤「操作無法完成,地址錯誤」? – Logan
顯然'streamError'沒有設置,如果該流尚未打開。 - 如果緩衝區不包含有效地址,則會得到「不良地址」。例如:'let written = stream.write(UnsafePointer(bitPattern:1)!,maxLength:4)' –