关于CloudKit使用

前言:

CloudKit是IOS8 以后推出的 远端数据存储功能。

可以将自定义的数据存入iCloud服务器,同时也支持删除修改等操作。

但数据的相关操作权限是受 数据所存储DB类型 和 当前手机icloud用户 而定的。


CloudKit 引入步骤:

1. 登入 开发者证书管理界面(https://developer.apple.com/account/ios/certificate/?teamId=XMUP6559UU)

2. 在 iCloud Containers一栏,新增一个cloud container。(新增的container的ID 必须跟 xcode的对应工程的target的 BundleID一致,除了 iCloud 前缀外)

3. xcode新建一个工程,bundleID 与上面一致,并打开iCloud 功能。


关于CloudKit使用_第1张图片


4. 相关实现代码:

CKContainer *myContainer = [CKContainer defaultContainer];     //获取container,可以用ID来指定 自定义的container,也可以使用默认的。

CKDatabase *publicDatabase = [myContainer publicCloudDatabase];    //获取container里的 db。这里用的是public DB。

CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"119"];       //recordID, name必须在这个DB里是唯一的。

CKRecord *artworkRecord = [[CKRecord alloc] initWithRecordType:@"Artwork" recordID:artworkRecordID];   //创建一条新的record。recordType 类似于DB的表名。

artworkRecord[@"name"] = @"testName";    //record的 这种key-value 存储方式;value支持的数据类型参考 CKRecord.h 的CKRecordValue协议

//新建/更改记录

CKModifyRecordsOperation *modifyRecords= [[CKModifyRecordsOperation alloc] initWithRecordsToSave:@[artworkRecord] recordIDsToDelete:nil];    modifyRecords.savePolicy=CKRecordSaveAllKeys;   

modifyRecords.qualityOfService=NSQualityOfServiceUserInitiated;   

modifyRecords.modifyRecordsCompletionBlock=    ^(NSArray * savedRecords, NSArray * deletedRecordIDs, NSError * operationError)

{        //   the completion block code here       

NSLog(@"");   

};

//获取记录

[publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord * _Nullable record, NSError * _Nullable error) {        NSLog(@"");    }];

5. 登入 icloud远端数据管理平台进行查看:icloud数据管理平台

关于远端DB类型:

privateCloudDatabase:奴属于当前手机icloud账户的DB,该账户登录期间,数据提交到该DB里,且只有在该账户登录时,才能取到相关记录。切换icloud账户将无法获取到。

publicCloudDatabase:所有人都可以访问,但只限于同bundleID的 app。(由于container 的bundle ID限制)

sharedCloudDatabase:IOS10新推出的,用 CKShare 创建的记录,设定一定的权限 即可被遵守相同规则的 app访问到。


TO BE CONTINUED....

你可能感兴趣的:(关于CloudKit使用)