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に変換する必要がありますか?もしそうなら、どうしたらいいですか? enumerateBytes()
閉鎖中
Swift 3では、func stringArray(from nsData:NSData) ';-)を好きです。 – vadian
@vadian:確かに!可能であれば、 'func stringArray(from data:Data)'となります。 - 私はOPが彼/彼女のコードでそれを直接テストできるように名前を保持しました。 –
Swift 3での廃止された 'NS ...'ファンデーションクラスの誤用について話す必要はありません... – vadian