使用Data.append(可变范围可替换随机访问切片),我期望将提供的切片的开始/结束索引中的字节附加到数据实例上.相反,它会附加Slice.count从Slice.base底层集合开头的字节.相反,使用切片实例化数据会导致切片的开始和结束索引之间的字节填充实例.
// Swift Playground, Xcode Version 8.3 (8E162)
import Foundation
var fooData = Data()
let barData = Data([0, 1, 2, 3, 4, 5])
let slice = barData.suffix(from: 3)
fooData.append(slice) // [0, 1, 2]
Data(slice) // [3, 4, 5]
Run Code Online (Sandbox Code Playgroud)
这是预期的行为,如果是这样,有什么可以帮助我更好地理解Data.append这种情况下的行为,以及它与之的区别Data.init?
另外,鉴于可变范围可替换随机访问切片的文档鼓励使用切片"仅用于瞬态计算",请执行 Data.init并Data.append引用该Slice.base集合或创建自己的字节副本?
| 归档时间: |
|
| 查看次数: |
177 次 |
| 最近记录: |