Если этот вопрос задан раньше, сообщите мне, и я удалю этот вопрос. Однако я не смог найти ответ на этот вопрос.Как увидеть, какая ошибка возникает во время записи
настоящее время я использую эту функцию: https://developer.apple.com/reference/foundation/outputstream/1410720-write
func write(_ buffer: UnsafePointer<UInt8>, maxLength len: Int) -> Int
писать в поток. Он возвращает целое число, и в соответствии с документацией это целое используется для определения того, были ли данные отправлены успешно или нет:
- Положительное число указывает количество записанных байтов.
- 0 указывает, что поток фиксированной длины и достиг своей емкости.
- -1 означает, что операция не удалась; более подробную информацию об ошибке можно получить с помощью streamError.
Мне любопытно узнать о последнем. В моем коде я получаю значение этой ошибки, которая равна -1 в моем случае. Я надеюсь увидеть, что конкретно не удается. Но как получить объект ошибки из целого числа?
Так как я могу получить это: «дополнительную информацию об ошибке можно получить с помощью streamError».
Спасибо.
EDIT:
Во-первых спасибо за уже ответ. Тем не менее, я закончил использовать следующий код:
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)' –