3

我正在创建一个需要访问 CoreBluetooth 才能与心率监测器交互的 iOS Swift 应用程序。这工作正常。

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

谢谢,

4

2 回答 2

4

问题是 CBService 和 HealthKit 都具有 UUID 属性。当您调用peripheral.services它时,它会返回一个AnyObject数组。因此,修复此问题将其类型转换为CBService.

for service in peripheral.services as [CBService]
{
}
于 2015-03-28T09:08:21.463 回答
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

于 2015-03-28T08:37:42.057 回答