我有一个Broadcom BLE外设广播数据,其中包括以制造商数据形式发布的序列号。当我尝试在iOS (Swift)中选择它时,我很难弄清楚如何将其转换为变量或常量。
我可以执行:
println("(advertisementData)")
'advertisementData'内置于centralManager函数中。在控制台上,我得到:
[kCBAdvDataIsConnectable: 0, kCBAdvDataLocalName: mangos, kcbadvdatammanufacturerdata: <08e19515 ec7e49fd af85c719 37332ccd cafebabe>]
这是膨胀的,但我需要比较kcbadvdatammanufacturerdata中的数据与字符串,并让它执行一个函数,如果它们是相同的。
我如何创建一个访问序列号/kcbadvdatammanufacturerdata的变量?我试过很多不同的方法。
函数代码:
func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {
let localData = advertisementData as NSDictionary
println(localData.objectForKey(CBAdvertisementDataLocalNameKey))
var localName: NSString!
if (localData.objectForKey(CBAdvertisementDataLocalNameKey) == nil)
{
localName = ""
}
else{
localName = localData.objectForKey(CBAdvertisementDataLocalNameKey) as! NSString
if (localName == "test"){
println("Test Found!")
println("(advertisementData)")
}
}
self.tLog(NSString(format: "Discovered %@, RSSI: %@n", localName, RSSI))
self.discoveredPeripheral = peripheral
if (self.verboseMode())
{
self.centralManager.connectPeripheral(peripheral, options: nil)
}
}
确认。figure it out:
println(advertisementData["kCBAdvDataManufacturerData"] as! NSData)