0

我正在关注在这里找到的健康工具包教程

它使用的是旧版本的 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)")
}
4

1 回答 1

5

当方法抛出时,您需要实现 do try catch Swift2 错误处理方法。您应该始终处理错误。如果您确定它永远不会失败,您可以使用 try! 如果您不想处理错误,您可以使用 try?

试试这样:

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)
}
于 2016-03-25T05:24:35.753 回答