- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我在调试分布式应用程序崩溃时遇到问题。我无法亲自重现此崩溃。然而,似乎有大量用户遇到了问题。我怀疑这与 HKSampleQuery 有关,并且可能没有返回任何结果。但我不明白为什么当许多用户表示他们允许我的应用程序访问他们的心率数据时没有结果返回。然后,即使我们没有结果,它也应该只运行方法“displayError()”,但它崩溃了......
Apple Watch 扩展接口(interface) Controller 中运行的代码
func loadHealthKitData(){
NSLog("Loading HealthKit Data")
let dataTypesToRead = NSSet(object: HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!)
healthKitStore.requestAuthorizationToShareTypes(nil, readTypes:dataTypesToRead as? Set<HKObjectType>) { (success, error) -> Void in}
let sampleType = HKSampleType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian)!
let date = cal.startOfDayForDate(NSDate())
let mostRecentPredicate = HKQuery.predicateForSamplesWithStartDate(date, endDate:NSDate(), options: .None)
let sortDescriptor = NSSortDescriptor(key:HKSampleSortIdentifierStartDate, ascending: false)
runHKSampleQuery(sampleType, mostRecentPredicate: mostRecentPredicate, sortDescriptor: sortDescriptor)
}
func runHKSampleQuery(sampleType: HKSampleType, mostRecentPredicate: NSPredicate, sortDescriptor: NSSortDescriptor){
let sampleQuery = HKSampleQuery(sampleType: sampleType, predicate: mostRecentPredicate, limit: 1000, sortDescriptors: [sortDescriptor]){
(sampleQuery, results, error ) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
****if(results == nil){
self.displayError()
return
}
self.handleHKResults(results!)
});
}
self.healthKitStore.executeQuery(sampleQuery)
NSLog("healthKitStore.executeQuery")
}
终端中的符号 Atos 崩溃输出
InterfaceController.(runHKSampleQuery(HKSampleType, mostRecentPredicate : NSPredicate, sortDescriptor : NSSortDescriptor) -> ()).(closure #1).(closure #1) (in AppleWatch Extension) (InterfaceController.swift:76)
我在接口(interface) Controller 的第 76 行添加了 4 ****,这是应该发生崩溃的地方。
来自崩溃的堆栈帧
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe
Triggered by Thread: 0
Thread 0 name:
Thread 0 Crashed:
0 AppleWatch Extension 0x001052f0 0xd8000 + 185072
1 libdispatch.dylib 0x2aa6045a _dispatch_call_block_and_release + 10 (init.c:760)
2 libdispatch.dylib 0x2aa60436 _dispatch_client_callout + 6 (object.m:508)
3 libdispatch.dylib 0x2aa600d0 _dispatch_main_queue_callback_4CF$VARIANT$up + 1480 (inline_internal.h:1063)
4 CoreFoundation 0x2aedc15e __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 10 (CFRunLoop.c:1613)
5 CoreFoundation 0x2aeda64a __CFRunLoopRun + 1554 (CFRunLoop.c:2718)
6 CoreFoundation 0x2ae2c90c CFRunLoopRunSpecific + 380 (CFRunLoop.c:2814)
7 Foundation 0x2b685346 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 258 (NSRunLoop.m:366)
8 Foundation 0x2b6d0130 -[NSRunLoop(NSRunLoop) run] + 80 (NSRunLoop.m:388)
9 libxpc.dylib 0x2ac71e76 _xpc_objc_main + 610 (main.m:176)
10 libxpc.dylib 0x2ac7359a xpc_main + 170 (init.c:1427)
11 Foundation 0x2b81fa08 -[NSXPCListener resume] + 164 (NSXPCListener.m:257)
12 PlugInKit 0x339d3950 -[PKService run] + 520 (PKService.m:105)
13 WatchKit 0x377593be main + 134 (main.m:54)
14 libdyld.dylib 0x2aaab8ca start + 2 (start_glue.s:64)
Thread 1:
0 libsystem_kernel.dylib 0x2ab9681c __workq_kernreturn + 8
1 libsystem_pthread.dylib 0x2ac41a42 _pthread_wqthread + 918 (pthread.c:1999)
2 libsystem_pthread.dylib 0x2ac41698 start_wqthread + 12 (pthread_asm.s:147)
在这方面的任何帮助都会很棒。我不明白为什么会发生这种情况。干杯
最佳答案
查看您认为可能存在问题的点:
您可能希望将代码更改为
if let results = results {
self.handleHKResults(results)
}else{
//handle error
}
作为一个单独的问题,您似乎没有对 error
对象执行任何操作,这可能有助于您发现真正的问题。
关于ios - watchOS 2 HealthKit HKSampleQuery 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448778/
为重量创建一个 HKSampleQuery(但不执行它) 创建并执行一个关于重量的 HKObserverQuery 在观察者查询的updateHandler中,执行权重样本查询 第一次执行示例查询时工
我希望将 HealthKit HKSampleQuery 返回的结果限制为通过我自己的应用程序输入的结果。有没有一种方法可以仅使用我的应用程序包标识符指定结果,从而排除从其他应用程序返回的任何其他数据
我想获取 HealthKit 数量数据并按数量值对它们进行排序。是否可以? 我知道我可以通过在 NSPredicate 中使用 HKPredicateKeyPathQuantity 来过滤它们,但我找
我在查询 HKWorkout 时遇到问题。 下面是我用来保存 HKWorkout 和 HKQuantitySample 的代码。 func workout(#distance:Double, star
我正在尝试获取过去一个月的所有心率样本,并从中提取时间和值。 到目前为止,我有以下方法: func getThisMonthsHeartRates() { print("func called
我在使用 HKSampleQuery 获取最新的体重数据点时遇到问题。我已正确设置应用程序权限,但 HKQuantityTypeIdentifier.bodyMass 未从 Health 应用程序返回
这是一款 WatchOS 应用。通过测试,似乎这段代码只会返回我手动添加到健康应用程序中的不到 1 周的任何体重值。这是故意的吗?周围的方式? func getUserBodyMass(complet
所以我在调试分布式应用程序崩溃时遇到问题。我无法亲自重现此崩溃。然而,似乎有大量用户遇到了问题。我怀疑这与 HKSampleQuery 有关,并且可能没有返回任何结果。但我不明白为什么当许多用户表示他
所以我正在关注苹果文档 here 我想做的是访问 HKSampleQuery 上的 HKMetadataKeyHeartRateMotionContext 键。如果 HrContext = 1 并且
我正在尝试返回最近 7 天记录的心跳样本。我认为我的方法不错,但我仍然不太确定我的查询部分。这是我到目前为止所做的。唯一被打印的想法是 95 count/min 90EBAB07-9CAB-445E-
当我需要从 HealthKit 读取数据时,我的代码是这样的: let stepsCount = HKQuantityType.quantityTypeForIdentifier(HKQuantity
我的应用程序使用 HealthKit 框架来检索用户健康数据。我想从 HealthKit 获得大约 25 个不同的数据点。 为此,我目前在示例查询的完成处理程序内的 for-loop 中进行了 25
我是一名优秀的程序员,十分优秀!