首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型HKHealthStore的值没有dateOfBirthWithError类型。

类型HKHealthStore的值没有dateOfBirthWithError类型。
EN

Stack Overflow用户
提问于 2015-10-12 07:07:01
回答 2查看 431关注 0票数 0

我试图使用HealthKit读取数据,但在运行以下代码时仍然会遇到相同的问题:

代码语言:javascript
复制
func readAge() -> ( age:Int?)
{
    var error:NSError?
    var age:Int?

    // 1. Request birthday and calculate age
    if let birthDay = healthKitStore.dateOfBirthWithError(&error)
    {
        let today = NSDate()
        let calendar = NSCalendar.currentCalendar()
        let differenceComponents = NSCalendar.currentCalendar().components(.YearCalendarUnit, fromDate: birthDay, toDate: today, options: NSCalendarOptions(0) )
        age = differenceComponents.year
    }
    if error != nil {
        print("Error reading Birthday: \(error)")
    }

    return (age)
}

它给了我错误:Value of type HKHealthStore has no type dateOfBirthWithError

我不知道为什么这不起作用,因为我在其他地方看到了几乎完全相同的代码。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-12 20:47:55

在SWIFT2.0中,获取错误参数的方法与SWIFT1.0和Objective的处理方法不同。方法名只是dateOfBirth,它抛出一个NSError,您可以用try语句来处理它。

票数 0
EN

Stack Overflow用户

发布于 2016-04-11 22:05:11

使用Swift 2,您可以这样做:

代码语言:javascript
复制
func readAge() -> ( age:Int?)
{
   var error:NSError?
    var age:Int?

    do {
      let birthDay = try healthKitStore.dateOfBirth()
      let today = NSDate()
      let calendar = NSCalendar.currentCalendar()
      let differenceComponents = NSCalendar.currentCalendar().components(NSCalendarUnit.Year, fromDate: birthDay, toDate: today, options: NSCalendarOptions(rawValue: 0))
      age = differenceComponents.year
    } catch let error as NSError {
      print(error.localizedDescription)
    }

    return (age)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33075116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档