【发布时间】:2017-04-13 19:10:40
【问题描述】:
我想将我的 nsData 解码为字符串数组。我现在有这个代码:
func nsDataToStringArray(data: NSData) -> [String] {
var decodedStrings = [String]()
var stringTerminatorPositions = [Int]()
var currentPosition = 0
data.enumerateBytes() {
buffer, range, stop in
let bytes = UnsafePointer<UInt8>(buffer)
for i in 0 ..< range.length {
if bytes[i] == 0 {
stringTerminatorPositions.append(currentPosition)
}
currentPosition += 1
}
}
var stringStartPosition = 0
for stringTerminatorPosition in stringTerminatorPositions {
let encodedString = data.subdata(with: NSMakeRange(stringStartPosition, stringTerminatorPosition - stringStartPosition))
let decodedString = NSString(data: encodedString, encoding: String.Encoding.utf8.rawValue)! as String
decodedStrings.append(decodedString)
stringStartPosition = stringTerminatorPosition + 1
}
return decodedStrings
}
但我在这一行得到一个错误:let bytes = UnsafePointer<UInt8>(buffer)
无法使用“UnsafePointer”类型调用初始化程序 '(UnsafeRawPointer)' 类型的参数列表
是否需要将缓冲区转换为 UnsafePointer?如果是这样,我该怎么做?
【问题讨论】:
标签: swift