Swift 2.2 HealthKit - 调用可以抛出,但未标记'try'且未处理错误
Swift 2.2 HealthKit - Call can throw, but it is not marked with 'try' and the error not handled
我正在关注找到的健康工具包教程 here
它使用的是 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)")
}
当方法抛出时,您需要实现 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)
}
我正在关注找到的健康工具包教程 here
它使用的是 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)")
}
当方法抛出时,您需要实现 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)
}