Swiftでバイト配列を文字列に変換するときに問題が発生していますUInt8
。検索して簡単な解決策を見つけました
String.stringWithBytes(buff, encoding: NSUTF8StringEncoding)
String.type
しかし、メンバーがいないというエラーが表示されますstringWithBytes
。誰か解決策を提案してくれませんか?
これは、取得してNSData
バイト配列に変換し、そのバイト配列を文字列に変換するコードです。
let count = data.length / sizeof(UInt8)
var array = [UInt8](count: count, repeatedValue: 0)
data.getBytes(&array, length:count * sizeof(UInt8))
String.stringWithBytes(buff, encoding: NSUTF8StringEncoding)
ベストアンサー1
更新Swift 3/Xcode 8:
文字列の取得元bytes: [UInt8]
:
if let string = String(bytes: bytes, encoding: .utf8) {
print(string)
} else {
print("not a valid UTF-8 sequence")
}
文字列の取得元data: Data
:
let data: Data = ...
if let string = String(data: data, encoding: .utf8) {
print(string)
} else {
print("not a valid UTF-8 sequence")
}
更新Swift 2/Xcode 7:
文字列の取得元bytes: [UInt8]
:
if let string = String(bytes: bytes, encoding: NSUTF8StringEncoding) {
print(string)
} else {
print("not a valid UTF-8 sequence")
}
文字列の取得元data: NSData
:
let data: NSData = ...
if let str = String(data: data, encoding: NSUTF8StringEncoding) {
print(str)
} else {
print("not a valid UTF-8 sequence")
}
前回の回答:
String
メソッドはありませんstringWithBytes()
。NSString
NSString(bytes: , length: , encoding: )
NSData
メソッドを使用することもできますが、配列を必要とせずに から直接文字列を作成することもできますUInt8
。
if let str = NSString(data: data, encoding: NSUTF8StringEncoding) as? String {
println(str)
} else {
println("not a valid UTF-8 sequence")
}