我对 Swift很陌生,对 NIO 也很陌生。
我正在将 Swift 代码添加到需要将大量数据 (GB) 上传/下载到 AWS 的大型项目中。为此,我导入了严重依赖 NIO的 GitHub 项目Soto 。
大多数发送/接收数据的方法都是通过ByteBuffer
结构来完成的。我的应用程序已经有数据要上传到 FoundationData
对象中。我很难找出将这些Data
对象放入 NIO 的最佳方法。
在NIO ByteBuffer
(2.26.0)的文档中,它指出
支持的类型:可以从 ByteBuffer 读取/写入多种类型。...开箱即用,ByteBuffer 支持例如以下类型(非详尽列表):
- 字符串/静态字符串
- Swift 的各种(无符号)整数类型
- 基金会资料
- [UInt8] 通常是 UInt8 的任何集合
但是,最新的 swift-nil 包不ByteBuffer
支持 FoundationData
对象。相反,它支持DispatchData
对象,而对象又似乎与对象没有互操作性Data
。
我要避免的是复制每个数据块(一次 100 MB),只是为了在Data
和DispatchData
类型之间进行转换。
所以...
现在我的想法是其中之一
我完全迷路了,我还没有找到一个简单的解决方案
解决方案是创建一个由对象
DispatchData
支持的子类Data
使用指向对象中原始字节数组的非复制初始化器创建的
ByteBuffer
结构,以及一个简单地保留对象直到和对象被销毁的自定义释放器。DispatchData
Data
Data
ByteBuffer
DispatchData
我将不胜感激任何想法、经验或建议(特别是如果它是选项#1)。