使用 iOS 10,第一个测试版,HealthKit 授权崩溃。使用在 iOS 9.x 上运行的代码(除了我更改为 Swift 3)
即使是最简单的授权也会崩溃:
func authorizeHealthKit(_ completion: ((success:Bool, error:NSError?) -> Void)!)
{
// 1. Set the types you want to read from HK Store
var healthKitTypesToRead: Set<HKObjectType> = Set<HKObjectType>()
healthKitTypesToRead.insert(HKObjectType.characteristicType(forIdentifier: HKCharacteristicTypeIdentifier.dateOfBirth)!)
// 2. Set the types you want to write to HK Store
var healthKitTypesToWrite: Set<HKSampleType> = Set<HKSampleType>()
// 3. If the store is not available (for instance, iPad) return an error and don't go on.
if !HKHealthStore.isHealthDataAvailable()
{
// do some error handling
return;
}
// 4. Request HealthKit authorization
// iOS 10 beta 1 throws NSException without declaring it:
healthStore.requestAuthorization(toShare: healthKitTypesToWrite, read: healthKitTypesToRead) { (success: Bool, error: NSError?) -> Void in
// do stuff
}
}
这是在带有 iOS 10 beta 1 的 iPhone SE 模拟器中崩溃的最简单代码。
异常消息是
“libc++abi.dylib:以 NSException 类型的未捕获异常终止”。
授权是否可能在 iOS 10 beta 1 中根本不起作用?这是 XCode 8 beta 1
什么有效:我使用 Xcode 7.3 和 iOS 9.3 目标构建的 HelthKit 应用程序在硬件 iPhone 5 上的 iOS 10 beta 1 下运行良好。