如何查看写入功能期间发生的具体错误

时间:2017-01-31 19:45:41

标签: swift error-handling stream inputstream outputstream

如果之前已经问过这个问题,请告诉我,我会删除这个问题。但是,我无法找到一个回答此问题的人。

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

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

写入流。它返回一个整数,根据文档,这个整数用于确定数据是否成功发送:

  • 正数表示写入的字节数。
  • 0表示固定长度的流并且已达到其容量。
  • -1表示操作失败;有关错误的更多信息可以通过streamError获得。

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

基本上,我如何得到这个:&#34;有关错误的更多信息可以通过streamError获得。&#34;

感谢。

编辑:

首先感谢你的回答。但是,我最终使用了以下代码:

    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)")
        }
    }

并打印出错误为零。

1 个答案:

答案 0 :(得分:1)

InputStreamOutputStream都继承自Streamlet written = stream.write(buffer, maxLength: length) if written == -1 { if let error = stream.streamError { print(stream.streamError?.localizedDescription ?? "Unknown error") } 一个streamError属性:

  

返回表示流错误的NSError对象。

简单示例:

streamError

显然有些情况下失败后未设置open() 写,例如如果你没有<?php use app\classes\App as App; require ROOT . '/vendor/autoload.php'; require 'functions.php'; spl_autoload_register(function ($class_name) { $validNameSpaces = [ 'app\controllers\\', 'app\models\\', 'app\classes\\' ]; foreach($validNameSpaces as $namespace) { if(strpos($class_name, $namespace) === 0) { $path = __DIR__ . '/../' . strtr($class_name, '\\', '/') . '.php'; if(is_file($path) && is_readable($path)) { include_once $path; return true; } } } return false; }); App::instance(); include_once "routes.php"; 流。