当我使用 Health App 中的 Delete All 操作时,Health kit 仍会返回已删除的数据

Posted

技术标签:

【中文标题】当我使用 Health App 中的 Delete All 操作时,Health kit 仍会返回已删除的数据【英文标题】:Health kit still return deleted data when I use Delete All action from Health App 【发布时间】:2017-05-14 15:29:42 【问题描述】:

我正在使用 Health Kit 从 Health App 获取血压,我有一个奇怪的行为: 我从健康应用程序添加了一个新数据,它正确显示在我的客户端应用程序上,当我使用 Delete All 操作从健康应用程序中删除该数据时,我的客户端应用程序仍然返回它。但是当我单独删除相同的数据时(在单元格上向左滑动并单击删除按钮),我的客户端应用程序不会返回数据。 我正在寻找的正确行为是当健康 App 上没有数据时,我的客户端 App 也应该不显示数据。

这是我的代码:

[self.healthStore  requestAuthorizationToShareTypes:nil readTypes:[self dataTypesToRead] completion:^(BOOL success, NSError *error) 
    if (success) 
                HKSampleType *sampleType = [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierBloodPressureSystolic];

        NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:endDate options:HKQueryOptionNone];

        HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:sampleType predicate:predicate limit:0 sortDescriptors:nil resultsHandler:^(HKSampleQuery *query, NSArray *results, NSError *error) 
            if (!results) 
                NSLog(@"An error occured. The error was: %@.", error);
                abort();
            

            dispatch_async(dispatch_get_main_queue(), ^
                NSLog(@"results: %@.", results);


            );

        ];

        [self.healthStore executeQuery:query];

    

];

【问题讨论】:

【参考方案1】:

这似乎是 ios 中的一个错误,不是您可以通过更改应用程序代码来解决的问题。你应该file a radar Apple。

【讨论】:

以上是关于当我使用 Health App 中的 Delete All 操作时,Health kit 仍会返回已删除的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Health Kit 断开 Health App 的源?

删除 Health App 中添加的样本

如果您使用的是 Apple Watch,是不是需要先打开 Health App 同步数据,然后再打开自己的 healthkit 应用程序获取最新数据?

HKMetadataKeyTimeZone 对于由苹果的 Health App - HealthKit - iOS 创建的健康数据始终为零

HKMetadataKeyTimeZone 对于由苹果的 Health App - HealthKit - iOS 创建的健康数据始终为零

如何禁用`gcloud preview app run'的运行状况检查