数据与 [UInt8]

Eta*_*tan 9 nsdata swift

Swift 提供Data[UInt8]类型,它们的作用非常相似。

  • 两者之间有什么区别?
  • 在设计新 API 时,首选类型是什么?

Jac*_*ing 6

[UInt8]本质上是一个字节数组,一个字节(我相信你知道),由 8 位组成。虽然 NSData 不仅仅是一个字节数组,但它的底层结构在深处是基于一个的。例如,您可以使用诸如 之类的方法轻松地在它们之间进行转换data.bytes

在设计 API 方面,我个人建议您使用 NSData 设计它们,因为它通过简单的字节数组提供了所有额外的功能。Apple 已经为您完成了很多跑腿工作,为什么还要自己再做呢?

  • 看起来苹果已经齐心协力从 `[UInt8]` 切换到 `Data`,至少在 Swift Protobuf 项目中是这样:https://github.com/apple/swift-protobuf/issues/129 https:// /github.com/apple/swift-protobuf/pull/134 (3认同)