注意,这里说的使用icould不是用icloud进行系统备份,那个功能不需要我们写代码,备份到icloud的东西我们也不能操作。我们指的是以下这3种icloud使用方法:

这里有3中使用方法,

Key-value 就像UserDefault,只不过保存在icloud上,使用最简单,容量非常小,1M。

iCloud Documents 保存文档用的,放在一个特定的icloud目录中,core data的icloud功能就需要开启这个选项。

CloudKit 比较新的功能,在icloud上维护了一个数据库,客户端通过网络,直接操作里面的数据。

其中,core data 的icloud功能和 cloud kit是不同的,有以下区别

It’s not the same as using Core Data with iCloud, as apps based on CloudKit have direct control over data transfer as well as the aforementioned concept of public and private databases. Unlike Core Data, CloudKit has no built-in local data persistence, so caching has to be performed by the app.

cloud kit的使用方法可以参看 iOS_8_by_Tutorials

下面我贴上一小段例子代码

- (void)viewDidLoad {
[super viewDidLoad]; CKContainer *container = [CKContainer defaultContainer];
CKDatabase *publicDB = container.publicCloudDatabase;
CKDatabase *privateDB = container.privateCloudDatabase; NSPredicate *predicate = [NSPredicate predicateWithFormat:@"TRUEPREDICATE"]; CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Establishment" predicate:predicate]; [publicDB performQuery:query inZoneWithID:nil completionHandler:^(NSArray<CKRecord *> * _Nullable results, NSError * _Nullable error) {
NSLog(@"error is %@",error);
NSLog(@"%@",results);
}]; } - (IBAction)test{ //创建一条记录的ID并指定一个唯一的名字,
CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:[self GenUUID]]; //创建一个记录对象
CKRecord *artworkRecord = [[CKRecord alloc] initWithRecordType:@"Establishment" recordID:artworkRecordID]; //设置记录字段 artworkRecord[@"name"] = @"a name added"; CKContainer *container = [CKContainer defaultContainer];
CKDatabase *publicDB = container.publicCloudDatabase;
CKDatabase *privateDB = container.privateCloudDatabase; [privateDB saveRecord:artworkRecord completionHandler:^(CKRecord *artworkRecord, NSError *error){
if (!error) {
NSLog(@"保存成功");
}
else {
NSLog(@"保存失败%@",error);
}
}]; [publicDB saveRecord:artworkRecord completionHandler:^(CKRecord *artworkRecord, NSError *error){
if (!error) {
NSLog(@"保存成功");
}
else {
NSLog(@"保存失败%@",error);
}
}];
} - (NSString *)GenUUID
{
CFUUIDRef uuid_ref = CFUUIDCreate(NULL);
CFStringRef uuid_string_ref= CFUUIDCreateString(NULL, uuid_ref);
CFRelease(uuid_ref);
NSString *uuid = [NSString stringWithString:(__bridge NSString*)uuid_string_ref];
CFRelease(uuid_string_ref);
return uuid;
} @end

注意,注意!使用上面这段代码需要设备上登录了icloud,不然会返回错误。

代码并不复杂,cloudkit的最大特点,我感觉就是那个public的数据库了。比如我有个程序,想给用户分享点新闻什么的,再也不用自己架个服务器了,直接用cloudkit 中的 public 数据库保存好信息,在客户端拉取就行了!对于个人开发者是个大大的福音啊!

https://developer.apple.com/library/prerelease/tvos/documentation/General/Conceptual/iCloudDesignGuide/Chapters/Introduction.html#//apple_ref/doc/uid/TP40012094-CH1-SW1

ios 在程序中使用iCloud的更多相关文章

  1. 在iOS应用程序中使用Frida绕过越狱检测

           阿里聚安全在之前的三篇博客中介绍了利用Frida攻击Android应用程序,整个过程仿佛让开发者开启上帝视角,在本篇博客中,我们将会介绍在iOS应用程序中使用Frida绕过越狱检测.即使 ...

  2. Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页

    Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页 在FireMonkey iOS应用程序中的Tab Tab由FMX.TabControl.TTabControl定 ...

  3. Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件

    Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件 在FireMonkey iOS应用程序中使用WebBrowser 在iOS平台上,FireMonkey使用T ...

  4. Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项

    http://blog.csdn.net/delphiteacher/article/details/8924110 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox ...

  5. Delphi for iOS开发指南(5):在iOS应用程序中使用Calendar组件来选择日期

    http://blog.csdn.net/delphiteacher/article/details/8923519 在FireMonkey iOS应用程序中的Calendar FireMonkey使 ...

  6. Delphi for iOS开发指南(4):在iOS应用程序中使用不同风格的Button组件

    http://blog.csdn.net/DelphiTeacher/article/details/8923481 在FireMonkey iOS应用程序中的按钮 FireMoneky定义了不同类型 ...

  7. IOS在一个程序中启动另一个程序

    尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据.我们可以使用UIApplication类的openURL:方法从一个应用程序来 ...

  8. Xcode中iOS模拟器程序中的plist路径

    Xcode6.4里写了个简单的iOS程序在模拟器中跑. 其中用到了NSUserDefaults来保存属性文件plist,那么这个文件实际路径在哪里呢?在网上搜了一下,发现几种说法(*表示当前用户名): ...

  9. 在iOS应用程序中打开设备设置界面及其中某指定的选项界面

    摘自:http://stackoverflow.com/questions/8246070/ios-launching-settings-restrictions-url-scheme [[UIApp ...

随机推荐

  1. php-fpm进程关闭与重启脚本详解(转)

    先来理解一下什么是php-fpm PHP-FPM是一个PHP FastCGI管理器,是只用于PHP的. PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中.必须将 ...

  2. 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

    众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...

  3. js 判断鼠标滚轮方向

    最近因为公司项目的要求,需要做页面的全屏滚动切换效果. 页面的切换,需要脚本监听鼠标滑轮的滚动事件,来判断页面是向上切换or向下切换. 这里的脚本很简单,我就直接贴出来吧. $('html').on( ...

  4. Eclipse常见配置及常用插件

    tomcat为能同时运行多个项目而不崩溃,需要配置一下jvm设置 -Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=512m

  5. 【C语言入门教程】5.1 函数说明 与 返回值

    C 语言是结构化语言,它的主要结构成分是函数.函数被作为一种构件,用以完成程序中的某个具体功能.函数允许一个程序的各个任务被分别定义和编码,使程序模块化.本章介绍 C 语言函数的设计,如何用函数分解程 ...

  6. JS快速获取图片宽高的方法

    快速获取图片的宽高其实是为了预先做好排版样式布局做准备,通过快速获取图片宽高的方法比onload方法要节省很多时间,甚至一分钟以上都有可能,并且这种方法适用主流浏览器包括IE低版本浏览器. 我们一步一 ...

  7. 支付宝Payto接口的C#.net实现方法

    例一: using System; using System.Data; using System.Configuration; using System.Collections; using Sys ...

  8. go outside @ CULTS LYRICS

    I really want to go out I really want to go outside and stop to see your day You really want to hole ...

  9. BZOJ1455——罗马游戏

    1.题目大意:维护一个数据结构,可以实现合并操作,还能询问最小值 2.分析:这种问题当然是可并堆啦 随便写了一个左偏树QAQ #include <cstdio> #include < ...

  10. 160809212田京诚C语言程序设计实验2 选择结构程序设计_进阶

    实验2-6 猜数字游戏 实验要求: 编写一个C程序实现一个[1-100]以内的猜数字游戏. (1)       系统随机产生一个[1-100]之间的随机数. (2)       输入任意一个数字.数字 ...