Swift UUID 与 CoreBluetooth 和 HealthKit 的使用不明确

Swift ambiguous use of UUID with CoreBluetooth and HealthKit

我正在创建一个 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,它们工作正常,但将两者结合使用会出现歧义错误。有没有办法明确告诉它应该使用哪个?

谢谢,

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

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

问题是 CBService 和 HealthKit 都有 UUID 属性。当你调用 peripheral.services 时,它 returns 是一个 AnyObject 数组。所以解决这个问题类型转换为 CBService.

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