我试图使用HealthKit读取数据,但在运行以下代码时仍然会遇到相同的问题:
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
我不知道为什么这不起作用,因为我在其他地方看到了几乎完全相同的代码。
发布于 2015-10-12 20:47:55
在SWIFT2.0中,获取错误参数的方法与SWIFT1.0和Objective的处理方法不同。方法名只是dateOfBirth,它抛出一个NSError,您可以用try语句来处理它。
发布于 2016-04-11 22:05:11
使用Swift 2,您可以这样做:
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)
}https://stackoverflow.com/questions/33075116
复制相似问题