Xcode版本11.0(11A420a)
var byteArray: [UInt8] = []
do {
let data:NSData = try NSData(contentsOfFile: path)
print("Data Len: " + String(data.length))
var buffer = [UInt8](
unsafeUninitializedCapacity: data.length,
initializingWith: {_,_ in}
)
print("Buffer Len: " + String(buffer.count))
data.getBytes(&buffer, length: data.length)
byteArray = buffer
print("Array Len: " + String(byteArray.count))
} catch {
print("Load Error")
addChild(ErrorViewController())
return
}
这没有错误,但返回的长度为0。打印输出为:
数据镜头:3020
缓冲镜头:0
阵列透镜:0
我在做什么错了?
答案 0 :(得分:1)
此
var buffer = [UInt8](
unsafeUninitializedCapacity: data.length,
initializingWith: {_,_ in}
)
不执行任何操作,因为闭包不执行任何操作(它应初始化第一个闭包参数所指向的元素存储,然后设置第二个闭包参数initializedCount
)。还有这个
data.getBytes(&buffer, length: data.length)
什么都不做,因为buffer
为空。
话虽如此,您只需使用
将文件读入Data
let data = try NSData(contentsOfFile: path) as Data
// or better:
let data = try Data(contentsOf: URL(fileURLWithPath: path))
,然后使用Data
值。如果您确实需要将数据复制到数组中,则可以使用
let byteArray = Array(data)