前言:
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 功能。
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....
网友评论