从 Apple Watch 上的 HealthKit 中移除水样
Posted
技术标签:
【中文标题】从 Apple Watch 上的 HealthKit 中移除水样【英文标题】:Removing water sample from HealthKit on Apple Watch 【发布时间】:2016-08-24 19:18:04 【问题描述】:我们正在制作水跟踪应用程序,用户可以在其中添加水样。数据直接从 Apple Watch 和 iPhone 应用程序添加到健康。其中一项功能是撤消。
我正在尝试从 Apple Watch 中移除水样,但效果很好。但是,如果我在 iPhone 上添加示例并将其从 Apple Watch 中删除,则不会删除示例。最糟糕的是,我没有收到任何错误,HealthKit 回调返回成功。
- (void)removeSampleWithCompletion:(void (^ _Nonnull)(bool success, NSError *_Nullable error))completion
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDate *myDate = [NSDate date];
NSDate *startDate = [calendar startOfDayForDate:myDate];
// the type you're trying to delete (this could be heart-beats/steps/water/calories/etc..)
HKQuantityType *waterType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryWater];
// the predicate used to execute the query
NSPredicate *queryPredicate = [HKSampleQuery predicateForSamplesWithStartDate:startDate
endDate:myDate
options:HKQueryOptionStrictEndDate];
// prepare the query
HKSampleQuery *query = [[HKSampleQuery alloc] initWithSampleType:waterType
predicate:queryPredicate
limit:100
sortDescriptors:nil
resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error)
if (!error)
// Successfully retreived samples
// Filter only our samples. It is no possible to delete others.
NSMutableArray <HKSample *>*locassaSamples = [NSMutableArray new];
for (HKSample *sample in results)
if ([sample.sourceRevision.source.bundleIdentifier isEqual:@"com.companyname.appname"])
[locassaSamples addObject:sample];
// Remove last
HKSample *theLast = locassaSamples.lastObject;
if (theLast == nil)
return;
[self.healthStore deleteObject:theLast
withCompletion:^(BOOL success, NSError * _Nullable error)
completion(success, error);
];
return;
else
completion(FALSE, error);
];
// Source http://***.com/a/38263174/1162044
// last but not least, execute the query
[self.healthStore executeQuery:query];
更新。 我创建了一个雷达#28007271。
【问题讨论】:
你在哪里注意到删除后的样本仍然存在?手机还是手表? 他们留在手机上的“健康”应用程序中。 【参考方案1】:这是一个已知问题,已在 ios 10 和 watchOS 3 中修复。
【讨论】:
谢谢。我会确保它在 iOS 10 上适用于我,稍后会接受。以上是关于从 Apple Watch 上的 HealthKit 中移除水样的主要内容,如果未能解决你的问题,请参考以下文章
在没有配套应用程序的情况下从 Apple Watch 打开 Iphone 上的浏览器
Apple Wallet 中的 Apple Watch 1D 条码不可见
Apple Watch:从通知中心打开推送时未显示动态 Long Look
Apple Watch 上的 cancelAllLocalNotifications