【发布时间】:2020-03-01 04:27:12
【问题描述】:
我有解析 LLDP(链路层发现协议)帧的 Swift 代码,包括可以任意供应商定义的字段。有时它是一个字符串。有时它是一个任意的数据结构。
以下是我如何获取数据并将其强制转换为 .utf8 编码的字符串。
let ouiString = String(data: data[data.startIndex + 6 ..< data.startIndex + 2 + tlvLength], encoding: .utf8) ?? ""
这是生成的数据结构(具有关联值的枚举的一部分)。上面的“ouiString”现在位于末尾的“info:String”字段中。
case ouiSpecific(oui: String, subType: Int, info: String)
我是这样生成描述的:
case .ouiSpecific(let oui, let subType, let info):
return "OUI \(oui) subType \(subType) \(info)"
这是一个原始数据不是字符串的描述示例。不可显示的字符以我认为可以接受的方式显示。
(lldb) po value.description
"OUI 00:12:0f subType 5 \0\u{11}\0\u{11}\0\u{11}\0\u{11}\0\u{11}"
这是我尝试在 SwiftUI 列表中显示它的方法:
List(lldp.values, id: \.self) { value in
Text(value.description)
}
这是 SwiftUI 中生成的显示图像。包含所有转义的不可显示字符的信息字段不显示。
如何在 SwiftUI 文本视图中显示字段,其中不可显示的字符像“po”输出中一样转义?
【问题讨论】: