按大小划分Swift数据的最佳方式是什么



我想通过指定内存大小来对Data类型的变量进行切片。假设我只想要一个音频文件的初始1000字节。我正在尝试以下代码。两个变量都指向相同的内存地址,但大小与预期的不同,因此似乎有效,但不确定是否真的有效。

let original = try! Data(contentsOf: URL(string: "https://example.com/audio.mp3")!)
let sliced = original[0..<1_000] // e.g. Only 1000 bytes (I understand the range can not be beyond the actual original data size)
  • 以上代码是否如我所期望的那样工作
  • 对上述方法有任何顾虑吗
  • 有什么更好的方法来实现这一点吗

Data切片(由您正在使用的范围下标运算符以及prefixsuffix等方法返回(与其"父"Data共享存储,除非该切片足够小,可以内联存储在Data结构本身中。(我认为64位平台上的内联数据的最大大小是14字节。(

你可以在这里找到适用于苹果平台的Data的实现:

https://github.com/apple/swift-corelibs-foundation/blob/main/Darwin/Foundation-swiftoverlay/Data.swift

对于其他平台,实现在这里:

https://github.com/apple/swift-corelibs-foundation/blob/main/Sources/Foundation/Data.swift

相关内容

  • 没有找到相关文章

最新更新