将 UUID 转换为字符串表示,例如:1816 转换为 Cycling Speed 和 Cadence
Posted
技术标签:
【中文标题】将 UUID 转换为字符串表示,例如:1816 转换为 Cycling Speed 和 Cadence【英文标题】:Convert UUID to String representation eg: 1816 to Cycling Speed And Cadence 【发布时间】:2020-11-08 07:46:09 【问题描述】:我正在通过蓝牙连接到 Cycling Speed and Cadence 服务,并将外围设备保存到数组中(用于表格视图)。
我已经实现了这个结构
struct BTPeripheral: Identifiable
let id: Int
let name: String
let uuid: UUID
let desc: String
我打电话是这样
discoveredBTDevices.append(BTPeripheral.init(
id: discoveredBTDevices.count,
name: peripheral.name!,
uuid: peripheral.identifier,
desc: service.uuid.uuidstring) // trying service.uuid results in error
)
导致这个输出
id: 0,
name: "Wahoo CADENCE 1DE8",
uuid: E98F3843-1C6A-E4DE-6EF3-76B013950007,
desc: "1816"
描述为字符串1816(即cycle Speed & Cad服务的UUID)
let serviceCyclingSpeedAndCadenceUUID = CBUUID(string: "1816")
如何将 1816 转换为打印出来的字符串“Cycling Speed and Cadence”
print(service.uuid) // this results in "cycling Speed and Cadence"
如上所述,输入service.uuid
会导致错误Cannot convert value of type 'CBUUID' to expected argument type 'String'
【问题讨论】:
你怎么知道“1816”是“Cycling Speed and Cadence Service”的UUID(描述)?某处有清单吗? 是的。 bluetooth.com 中有一个列表 啊,谢谢!我想我找到了:btprodspecificationrefs.blob.core.windows.net/assigned-values/… 【参考方案1】:你可以得到它的description
(这就是print
最终会做的事情,因为CBUUID
符合CustomStringConvertible
):
service.uuid.description
或者使用字符串插值:
"\(service.uuid)"
debugDescription
也会产生相同的结果,但我不会使用它,除非这实际上是用于调试。
【讨论】:
我尝试过 (service.uuid) 但不知道我还需要包含引号。我之前也尝试过 peripheral.description,但这只是给了我一长串项目。以上是关于将 UUID 转换为字符串表示,例如:1816 转换为 Cycling Speed 和 Cadence的主要内容,如果未能解决你的问题,请参考以下文章
我拼成的JSON字符串,然后转换JSON对象成功了,但是到了后台报错.