1
我想将我的nsData解码为字符串数组。我现在有这样的代码:将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
}
但我得到这一行的错误:让字节= UnsafePointer<UInt8>(buffer)
不能调用类型“UnsafePointer”初始化与类型的 参数列表“( UnsafeRawPointer)'
我是否需要将缓冲区转换为UnsafePointer?如果是这样,我该怎么做?
在斯威夫特3我宁愿签名'FUNC字符串数组(从NSData的:NSData的)';-) – vadian
@vadian:的确!如果可能的话,或者'func stringArray(来自data:Data)'。 - 我保留这个名字,以便OP可以用他/她的代码直接测试它。 –
我们不需要讨论在Swift 3中滥用过时的'NS ...'基础类...... – vadian