确定数据实例是否连续



让d成为Data的一个实例。 在早期版本的 Swift 中,我可以使用类似

d.enumerateBytes{(pBuf: UnsafeBufferPointer<UInt8>, idx: Data.Index, flag: inout Bool) -> Void in
if (pBuf.count == d.count) { print("Data is contiguous!") }
}

但是,在 Swift 5 中,enumerateBytes()已被弃用,并且我收到如下警告:

warning: 'enumerateBytes' is deprecated: use `regions` or `for-in` instead

我很想做这样的事情

if d.regions.count == 1 { print("Contiguous!!!") }

然而regionsCollectionOfOne<Data>型的,根据定义,它总是包含一个元素。

有什么建议吗?

从 Swift 5 开始,所有Data值都有连续的存储,类型符合新的ContiguousBytes协议(在 #20225 中实现(。正如@matt所指出的,在最近的WWDC演讲中强调了这一变化:

因此,从 Swift 5 及以后,我们承诺 struct Data 是一种连续的缓冲区类型。

最新更新