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