使用CoreBluetooth和HealthKit快速模糊地使用UUID

时间:2015-03-28 08:35:00

标签: ios swift uuid core-bluetooth health-kit

我正在创建一个iOS Swift应用程序,需要访问CoreBluetooth才能与心率监视器进行交互。这很好用。

我还想使用HealthKit保存心率,但是当我将HealthKit导入应用程序时(即使是在单独的文件中),我收到以下错误;

http://i.stack.imgur.com/l0YWr.png

这与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,它可以正常工作但是两者结合会产生歧义错误。有没有办法明确告诉它应该使用哪个?

谢谢,

2 个答案:

答案 0 :(得分:4)

问题是CBService和HealthKit都有UUID属性。当您致电peripheral.services时,它会返回AnyObject数组。因此,将此问题修改为CBService

for service in peripheral.services as [CBService]
{
}

答案 1 :(得分:0)

HealthKit在创建对象时为其分配UUID。如果要添加自己的唯一ID,请使用HKMetadataKeyExternalUUID键将其添加到对象的元数据中。

来源:https://developer.apple.com/library/prerelease/ios/documentation/HealthKit/Reference/HKObject_Class/index.html#//apple_ref/occ/instp/HKObject/UUID