【问题标题】:Swift and HealthKit: type of expression too ambiguous without more contextSwift 和 HealthKit:没有更多上下文的表达式类型太模糊
【发布时间】:2016-01-04 20:32:23
【问题描述】:

我想接触 Swift 和 HealthKit。我正在跟进 this tutorial,但我在请求 HealthKit 权限时遇到了麻烦。我已经搜索过这个问题,在过渡到 Swift 2 时很常见,但我只是模糊地理解了这个问题。 代码如下:

let healthKitTypesToRead = Set(arrayLiteral:[
  HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth),
  HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBloodType),
  HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex),
  HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass),
  HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight),
  HKObjectType.workoutType()
  ])

我得到的错误是“表达式类型不明确,没有更多上下文”。我实际上只需要一个元素,那么我可以完全跳过数组创建吗? 我试图解决它,但我无法匹配类型而不会出现编译器错误。是的,我搜索了堆栈溢出但我无法解决它。 感谢您的帮助。

【问题讨论】:

    标签: ios swift swift2 healthkit


    【解决方案1】:

    编译器无法从您传递给文字 HKCharacteristicType?HKQuantityType?HKWorkoutType 的 3 种不同类型中推断出类型。您需要将集合的类型设置为 HKObjectType 并显式解开可选项(如果它们保证返回非零值)。如果不能保证这些值存在,那么最好在添加到集合之前检查每个值是否有 nil

    let healthKitTypesToRead: Set<HKObjectType> = [
        HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierDateOfBirth)!,
        HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBloodType)!,
        HKObjectType.characteristicTypeForIdentifier(HKCharacteristicTypeIdentifierBiologicalSex)!,
        HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierBodyMass)!,
        HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeight)!,
        HKObjectType.workoutType()
        ]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-15
      • 2016-12-10
      • 2015-12-16
      • 2018-06-26
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      相关资源
      最近更新 更多