我正在创建一个iOS Swift应用程序,需要访问CoreBluetooth才能与心率监视器进行交互。这很好用。
我还想使用HealthKit保存心率,但是当我将HealthKit导入应用程序时(即使是在单独的文件中),我收到以下错误;
这与service.UUID有关。虽然这里只打印线,但service.UUID在其他位置使用并产生相同的错误。但是,如果没有HealthKit导入,service.UUID工作正常。
func peripheral(peripheral: CBPeripheral!, didDiscoverServices error: NSError!) {
for service in peripheral.services{
NSLog("Discovered service: \(service.UUID)")
peripheral.discoverCharacteristics(nil, forService: service as CBService)
}
}
我已经分别使用了HealthKit和CoreBluetooth,它可以正常工作但是两者结合会产生歧义错误。有没有办法明确告诉它应该使用哪个?
谢谢,
答案 0 :(得分:4)
问题是CBService和HealthKit都有UUID属性。当您致电peripheral.services
时,它会返回AnyObject
数组。因此,将此问题修改为CBService
。
for service in peripheral.services as [CBService]
{
}
答案 1 :(得分:0)
HealthKit在创建对象时为其分配UUID。如果要添加自己的唯一ID,请使用HKMetadataKeyExternalUUID键将其添加到对象的元数据中。