Swift 2.2 HealthKit - 调用可以抛出,但它没有标记为'try'并且没有处理错误

Sim*_*mon 0 ios swift healthkit swift2.2

我正在按照此处的健康工具包教程进行操作

它使用的是旧版本的Swift(1.2),我正在尝试将其转换为最新版本(撰写本文时为Swift 2.2)

错误表明我需要进行do, catch, and try处理但是,它仍然会抛出相同的错误Call can throw, but it is not marked with 'try' and the error not handled

我在下面添加了我的尝试.使用Swift 2.2,我还需要使用最新的检查错误if error != nil吗?或者现在在处理中do, catch, try处理?

var error:NSError?
var age:Int?

// 1. Request birthday and calculate age
if let birthDay = healthKitStore.dateOfBirth()
{
  do {
    let today = NSDate()
    let calendar = NSCalendar.currentCalendar()
    let differenceComponents = NSCalendar.currentCalendar().components(.CalendarUnitYear, fromDate: birthDay, toDate: today, options: NSCalendarOptions(0) )

    try! age = differenceComponents.year

  } catch {
    print(error)
  }
}
if error != nil {
  print("Error reading Birthday: \(error)")
}
Run Code Online (Sandbox Code Playgroud)

Leo*_*bus 5

你需要实现在方法抛出时尝试捕获Swift2错误处理方法.你应该总是处理错误.如果您确定它永远不会失败,您可以尝试使用!如果您不想处理错误,可以使用试试吗?

试试这样:

var age: Int?
do {
    // 1. Request birthday and calculate age
    let birthDay = try healthKitStore.dateOfBirth()
    age = NSCalendar.currentCalendar().components(.Year, fromDate: birthDay, toDate: NSDate(), options: []).year
} catch let error as NSError {
    print(error.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)