gpt4 book ai didi

ios - 快速将 CBUUID 转换为 NSNumber

转载 作者:行者123 更新时间:2023-11-29 05:15:58 32 4
gpt4 key购买 nike

如何将 CBUUID 转换为 UINT16?

我想获取广告数据中的设备信息为UINT16。

我遇到了错误

无法将“CBUUID”类型的值 (0x1d2715e68) 转换为“NSNumber”(0x1d25c9db0)。2019-12-04 14:17:18.731697-0500 ProjectName [717:125723]无法将类型“CBUUID”(0x1d2715e68)的值转换为“NSNumber”(0x1d25c9db0)。

终端中我的广告数据

[
"kCBAdvDataTxPowerLevel": 0,
"kCBAdvDataIsConnectable": 1,
"kCBAdvDataTimestamp": 597179838.727399,
"kCBAdvDataServiceUUIDs": <__NSArrayM 0x281252e20>(22043200-9530-4EA8-9D21-04146852E51F),
"kCBAdvDataServiceData": { "设备信息"= {​​length = 6, 字节 = 0x010000020004};},
“kCBAdvDataLocalName”:base0
]

我已经用粗体突出显示了我需要的信息。

我下面有以下代码。

    public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

guard peripheral.state != .connected else {
return
}


let advertisementDataService = advertisementData[CBAdvertisementDataServiceDataKey]
let deviceInformation = advertisementDataService as! Dictionary<UInt16,AnyObject>
}

谢谢!!!

最佳答案

根据[文档[( https://developer.apple.com/documentation/corebluetooth/cbadvertisementdataservicedatakey ),与 CBAdvertisementDataServiceDataKey 关联的字典类型为<CBUUID,Data> .检索到字典后,您可以使用适当的 CBUUID 为它添加下标。实例(0x180A 是设备信息服务)。

public func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {

guard peripheral.state != .connected else {
return
}


if let deviceInformation = advertisementData[CBAdvertisementDataServiceDataKey] as? Dictionary<CBUUID,Data>,
let data = deviceInformation[CBUUID(string:"0x180A")] {
// Do something with the data
}
}

关于ios - 快速将 CBUUID 转换为 NSNumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59183515/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com