[swift]无法将值类型一个可编程的转换?预期参数类型集

标签: ios Swift
发布时间: 2017/3/6 23:38:53
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我刚开始学习 swift 2 天前,所以我提前道歉如果这可能听起来像一个愚蠢的问题。

我正在从 HealthKit 遵循本教程中获得基本用户数据︰ https://www.natashatherobot.com/healthkit-getting-fitness-data/ ,但当我编译它,我得到了以下错误︰

无法将值类型一个可编程的转换?对预期参数键入 Set <'HKSampleType >

func requestHealthKitAuthorization(dataTypesToWrite: NSSet?, dataTypesToRead: NSSet?) {
    healthStore?.requestAuthorizationToShareTypes(dataTypesToWrite, readTypes: dataTypesToRead, completion: { (success, error) -> Void in
        if success {
            println("success")
        } else {
            println(error.description)
        }
    })
}

我用过各种答案的我发现在线,但没有成功。

什么提示,将不胜感谢 !

解决方法 1:

看来你已经找到老在撰写一篇 Swift 1 的时代,很长、 很长的时间。 我假定您正在使用最新的发布的版本的 Xcode (7.3.1,包括 Swift 2.2.1)。

显示错误的方法可以这样重写︰

func requestHealthKitAuthorization(dataTypesToWrite: Set<HKSampleType>?, dataTypesToRead: Set<HKObjectType>?) {
    healthStore?.requestAuthorizationToShareTypes(dataTypesToWrite, readTypes: dataTypesToRead, completion: { (success, error) -> Void in
        if success {
            print("success")
        } else {
            print(error?.description ?? "unknown error")
        }
    })
}
  • 前两个参数的两个类型已更改为 Set<HKSampleType>?Set<HKObjectType>? 。 (错误消息表示第一次失配。)

  • 为可选性 completion 处理程序的参数已更改。

  • printlnprint 新都统一到 print

但你 (很可能) 可能会发现很多其他困难,接下来的古代的文章。

我建议你找到另一篇文章,写 Xcode/Swift 您正在使用的相同版本

赞助商