HKBiologicalSexObject.biologicalSex returns HKBiologicalSex 而不是 .Male 或 .Female

HKBiologicalSexObject.biologicalSex returns HKBiologicalSex instead of .Male or .Female

我已经授权了 HealthKit,我正在从 HealthKitStore 中获取 BiologicalSex,如下所示:

let healthKitStore:HKHealthStore = HKHealthStore()
var biologicalSexObject: HKBiologicalSexObject?
var biologicalSex: HKBiologicalSex?

do {
    biologicalSexObject = try healthKitStore.biologicalSex()
    biologicalSex = biologicalSexObject!.biologicalSex
} catch _ as NSError {
    biologicalSex = nil
    print("error reading biological sex")
}

但是,当我尝试打印 biologicalSex 时,它 returns HKBiologicalSex 而不是 .Male.Female.

我在几个教程中或多或少地看到过这个确切的代码,所以我想知道在 Swift 2 中是否有我应该注意的语法更改。(错误处理已更改,所以我很好奇是否还有其他值得注意的地方。)

需要 biologicalSex = biologicalSexObject!.biologicalSexrawValue 才能执行此操作。 BiologicalSex 的枚举如下所示:

typedef enum : NSInteger {
   HKBiologicalSexNotSet = 0,
   HKBiologicalSexFemale,
   HKBiologicalSexMale,
   HKBiologicalSexOther,
} HKBiologicalSex;

使用此信息很容易设计一个 switch 语句来涵盖所有可能的值:

switch biologicalSex.rawValue{
    case 0:
        biologicalSex = nil
    case 1:
        biologicalSex = "Female"
    case 2:
        biologicalSex = "Male"
    case 3:
        biologicalSex = "Other"
    default:
        biologicalSex = nil
}