从 swift 1.2 迁移后 swift2 中的 healthKit 错误

Posted

技术标签:

【中文标题】从 swift 1.2 迁移后 swift2 中的 healthKit 错误【英文标题】:healthKit error in swift2 after migration from swift 1.2 【发布时间】:2015-08-05 08:03:07 【问题描述】:

我有这段代码要求在Swift 1.2 工作的写权限,升级到Swift 2.0 后我收到一个奇怪的错误: ... '_' is not convertible to 'HKWorkoutType'

出现错误的代码行:

let healthKitTypesToWrite = Set(arrayLiteral:[
        HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned),
        HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning),
        HKQuantityType.workoutType()
        ])

有什么想法吗?

【问题讨论】:

如果我的回答对你来说更安全,可以考虑投票:) 我还不允许投票,只要我这样做,我会的,谢谢 完成,顺便说一句:我发布了另一个问题,有一个奇怪的错误,也许你也知道那个问题的答案 【参考方案1】:

为前两项添加!

let healthKitTypesToWrite = Set(arrayLiteral:
[
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned)!, 
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)!, 
    HKQuantityType.workoutType() 
])

这是必需的,因为 quantityTypeForIdentifier 返回 HKQuantityType?

【讨论】:

以上是关于从 swift 1.2 迁移后 swift2 中的 healthKit 错误的主要内容,如果未能解决你的问题,请参考以下文章

迁移到惯用的 Swift 2 的清单(又名 Swift 2 转换指南在哪里)?

从 swift 2.3 问题迁移到 swift 3.1

Alamofire 自定义响应从 Alamofire v1.3 迁移到 3.0(和 Swift 2 语法)

NSData init?(contentsOf url: URL) 从 Swift 2 迁移到 Swift 3

Swift 3 中的十进制到双精度转换

迁移 Swift 和更新 Alamofire 后,我的路由器无法工作