HealthKit之实战写入和删除

简介:

- (void)queryStepCount

{

    if (![HKHealthStore isHealthDataAvailable])

    {

        NSLog(@"设备不支持healthKit"); return;

    }

    _healthStore = [[HKHealthStore alloc] init];

    HKObjectType *type1 = [HKObjectType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis];// 睡眠分析

    NSSet *set = [NSSet setWithObjects:type1, nil]; // 读集合


    HKCategoryType *sType1 = [HKCategoryType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis];

    NSSet *sset = [NSSet setWithObjects:sType1, nil]; // 写集合

    

    __weak typeof (&*self) weakSelf = self;

    [_healthStore requestAuthorizationToShareTypes:sset readTypes:set completion:^(BOOL success, NSError * _Nullable error) {

        if (success)

        {

            [weakSelf readStepCount];

        } else

        {

            NSLog(@"healthkit不允许读写");

        }

    }];

}


//查询数据

- (void)readStepCount

    // 睡眠分析

    HKCategoryType *categoryType = [HKCategoryType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis];

    HKDevice *device = [[HKDevice alloc] initWithName:@"文能设备" manufacturer:@"中国制造商" model:@"智能机" hardwareVersion:@"1.0.0" firmwareVersion:@"1.0.0" softwareVersion:@"1.0.0" localIdentifier:@"lizaochengwen" UDIDeviceIdentifier:@"wennengshebei"];

    HKCategorySample *testObject = [HKCategorySample categorySampleWithType:categoryType value:0.25 startDate:[NSDate dateWithTimeIntervalSinceNow:-(24 * 3600)] endDate:[NSDate date] device:device metadata:nil];

    [_healthStore saveObject:testObject withCompletion:^(BOOL success, NSError * _Nullable error) {

        if (success) {

            NSLog(@"文能设备,收集的睡眠记录保存成功");

        } else

        {

             NSLog(@"文能设备,收集的睡眠记录保存失败 %@", error);

        }

    }];

    

    NSMutableArray *list= [[NSMutableArray alloc] init];

    for (float i = 1; i < 100; i++) {

        HKCategorySample *testObject = [HKCategorySample categorySampleWithType:categoryType value:i/100.0 startDate:[NSDate dateWithTimeIntervalSinceNow:-(24 * 3600/i)] endDate:[NSDate date] device:device metadata:nil];

        [list addObject:testObject];

    }

    [_healthStore saveObjects:list withCompletion:^(BOOL success, NSError * _Nullable error) {

        if (success) {

            NSLog(@"文能设备,收集的睡眠记录保存成功");

        } else

        {

            NSLog(@"文能设备,收集的睡眠记录保存失败 %@", error);

        }

    }];

    

    NSSet *dSet= [[NSSet alloc] initWithObjects:@"文能设备", nil];

    NSPredicate *catePredicate = [HKQuery predicateForObjectsWithDeviceProperty:HKDevicePropertyKeyName allowedValues:dSet];

    [_healthStore deleteObjectsOfType:categoryType predicate:catePredicate withCompletion:^(BOOL success, NSUInteger deletedObjectCount, NSError * _Nullable error) {

        if (success) {

            NSLog(@"文能设备,收集的睡眠记录删除成功 %@", @(deletedObjectCount));

        } else

        {

            NSLog(@"文能设备,收集的睡眠记录删除失败 %@", error);

        }

    }];

}


目录
相关文章
|
2月前
|
开发者
Harmony 状态管理神器 @ObservedV2
Harmony 状态管理神器 @ObservedV2
49 4
Harmony 状态管理神器 @ObservedV2
|
存储 搜索推荐
C进阶:通讯录(动态版本 + 文件操作)附源码(上)
C进阶:通讯录(动态版本 + 文件操作)附源码
47 0
C进阶:通讯录(动态版本 + 文件操作)附源码(下)
C进阶:通讯录(动态版本 + 文件操作)附源码(下)
75 0
|
开发工具 iOS开发 git
iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)
iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)
326 0
iOS 开发 - 亲身经历告诉你如何把自己的库通过pod导入(详细步骤)
|
中间件
Axure实战05:创建一个fakeUpdate假装更新网站
Axure实战05:创建一个fakeUpdate假装更新网站
622 0
Axure实战05:创建一个fakeUpdate假装更新网站
|
移动开发 Java Android开发
《阿里巴巴Android开发手册》v1.0.1更新,优化部分内容和示例代码
春节余味尚未消,我们为移动开发者准备了一份迟到的新年礼物——《阿里巴巴Android开发手册》,继《阿里巴巴Java开发手册》之后,阿里巴巴开发规范家族又添一丁,「阿里巴巴Android开发规范」认证考试也同步上线。
45639 0
HealthKit 框架详细解析
HealthKit框架详细解析(一) —— 基本概览(一)HealthKit框架详细解析(二) —— 基本概览(二)
1835 0
|
数据库 数据库管理 容器
[UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库
原文:[UWP小白日记-1]判断APP是否是第一次运行初始化SQLITE数据库   利用应用程序设置来实现此功能。   1.首先,获取APP设置的容器: ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;   由于获取容器的时候并没有给key为FirestStart的赋值,所以下面就直接判断是不是为null,为null就是第一次运行APP, 然后在else里给key为FirestStart的赋值,那么else的代码就只能执行一次了。
1433 0