在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)

推荐答案

Update for 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")
}

Update for 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")
}

Previous answer:

String没有stringWithBytes()方法.

 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")
}

Swift相关问答推荐

SwiftUI Map覆盖了工具栏/导航栏的外观?

通过withstickedContinuation传递通用类型T

为表单部分赋予背景 colored颜色 /渐变

为什么我的引用类型对象在初始化后有3个强引用?

SwiftData查询按日期排序的项的属性数组

避免嵌套导航TabView

如何设置两个不同的视图模型以在我的SwiftUI应用程序中使用相同的数据源?

如何在自定义视图中读取修改符子元素?

SwiftUI:为什么@State在子视图中持续存在?

SWIFT异步/等待,多个监听程序

SwiftUI,如何更改具有多个按钮和一个布尔条件的一个按钮标签

在 Swift 中将异步任务包装到 DispatchWorkItem 中以使其可取消?

在 Swift 5.7 中使用协议作为类型时什么时候需要写 `any`

在这个使用 URLSession 的简单 case 中是否创建了一个强引用循环?

列表不显示信息

Swift 非参与者隔离闭包

如何在填充上添加 if else 语句? SwiftUI

展开 List 中的 HStack 以端到端但不是从上到下,因此看起来项目之间有更宽的空间

在 Swift 中获取双精度的小数部分

如何在 Swift 中将 NSURL 转换为字符串