iOS云存储:CloudKit

来源:互联网 发布:淘宝店铺监管正常几天 编辑:程序博客网 时间:2024/06/06 20:20

一、简介

从iOS8开始,苹果为开发者提供了ClouKit,可以把我们的应用程序和用户数据存储在iCloud上,说白了就是代替后台服务器开发,我们只要专注移动开发就好了生气


二、集成

1、使用CloudKit你需要拥有一个开发者账号,并且在你的Xcode中配置好,如下图:



2、选择capabilities 将iCloud打开,并选中CloudKit复选框 ,xcode会以当前bundleid创建一个默认的容器,点击CloudKitDashboard我们就可以访问CloudKit后台了,当然也可以通过网址访问:https://icloud.developer.apple.com/dashboard 



3、登录你的开发者账号后进入下面的界面


三、使用

1、导入CloudKit.framework框架


      2、创建一条记录

 

[java] viewplain copy
  1. //创建一条记录的ID并指定一个唯一的名字,  
  2.     CKRecordID *artworkRecordID [[CKRecordID alloc] initWithRecordName:@"czbk"];  
  3.       
  4.     //创建一个记录对象  
  5.     CKRecord *artworkRecord [[CKRecord alloc] initWithRecordType:@"Person" recordID:artworkRecordID];  
  6.       
  7.     //设置记录字段  
  8.     artworkRecord[@"job" @"itcast" 
  9.     artworkRecord[@"name"@"欧阳情" 
  10.     artworkRecord[@"address"@"北京" 

 

   3、保存记录

 

[java] viewplain copy
  1. //1、创建一个容器(使用默认容器)  
  2. CKContainer *myContainer [CKContainer defaultContainer];  
  3.   
  4. //2、创建数据库  
  5. CKDatabase *publicDatabase [myContainer publicCloudDatabase];  
  6.   
  7. //3、将记录保存在数据库  
  8. [publicDatabase saveRecord:artworkRecord completionHandler:^(CKRecord *artworkRecord, NSError *error){  
  9.     if (!error)  
  10.           
  11.         NSLog(@"保存成功");  
  12.      
  13.     else  
  14.         NSLog(@"保存失败%@",error);  
  15.      
  16. }];  

4、运行程序之前需要到模拟器-- 设置-- iCloud 登录你的apple ID(可以不是开发者账号)

 



5、保存成功后我们登录CloudKit后台看一下有什么变化



6、怎样查询我们保存好的内容呢?

*由于记录类型创建时保存的元数据使用的是即使模式(just-in-time),所以我们要在这里启用记录ID查询索引:




7、在代码中获取我们保存好的内容

 

[java] viewplain copy
  1. //1.创建容器  
  2.     CKDatabase *publicDatabase [[CKContainer defaultContainer] publicCloudDatabase];  
  3.       
  4.     //2.创建记录ID  
  5.     CKRecordID *artworkRecordID [[CKRecordID alloc] initWithRecordName:@"czbk"];  
  6.       
  7.     //3.查询  
  8.     [publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord *artworkRecord, NSError *error)  
  9.         if (error)  
  10.               
  11.             NSLog(@"获取失败:%@",error);  
  12.          
  13.         else  
  14.               
  15.             //CKRecord很像一个字典,我们可以这样获取,搜噶~~  
  16.             NSString *address artworkRecord[@"address"];  
  17.               
  18.             NSLog(@"address %@",address);  
  19.               
  20.          
  21.     }];  

8、修改我们保存好的内容

 

 

[java] viewplain copy
  1. //1.获取数据库  
  2.     CKDatabase *publicDatabase [[CKContainer defaultContainer]  
  3.                                   publicCloudDatabase];  
  4.     //2.记录ID  
  5.     CKRecordID *artworkRecordID [[CKRecordID alloc] initWithRecordName:@"115"];  
  6.       
  7.     //3.查询  
  8.     [publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord  
  9.                                                                           *artworkRecord, NSError *error)  
  10.         if (error)  
  11.               
  12.             //处理错误  
  13.               
  14.         }else  
  15.               
  16.             // 修改数据库中的记录。。。your code  
  17.               
  18.               
  19.             //保存时间  
  20.             NSDate *date artworkRecord[@"date"];  
  21.             artworkRecord[@"date"[date dateByAddingTimeInterval:30.0 60.0];  
  22.               
  23.             //保存  
  24.             [publicDatabase saveRecord:artworkRecord completionHandler:^(CKRecord  
  25.                                                                          *savedRecord, NSError *saveError)  
  26.                 //处理错误  
  27.             }];  
  28.         }];  


0 0