ios 在程序中使用iCloud
注意,这里说的使用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 数据库保存好信息,在客户端拉取就行了!对于个人开发者是个大大的福音啊!
ios 在程序中使用iCloud的更多相关文章
- 在iOS应用程序中使用Frida绕过越狱检测
阿里聚安全在之前的三篇博客中介绍了利用Frida攻击Android应用程序,整个过程仿佛让开发者开启上帝视角,在本篇博客中,我们将会介绍在iOS应用程序中使用Frida绕过越狱检测.即使 ...
- Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页
Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页 在FireMonkey iOS应用程序中的Tab Tab由FMX.TabControl.TTabControl定 ...
- Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件
Delphi for iOS开发指南(7):在iOS应用程序中使用WebBrowser组件 在FireMonkey iOS应用程序中使用WebBrowser 在iOS平台上,FireMonkey使用T ...
- Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项
http://blog.csdn.net/delphiteacher/article/details/8924110 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox ...
- Delphi for iOS开发指南(5):在iOS应用程序中使用Calendar组件来选择日期
http://blog.csdn.net/delphiteacher/article/details/8923519 在FireMonkey iOS应用程序中的Calendar FireMonkey使 ...
- Delphi for iOS开发指南(4):在iOS应用程序中使用不同风格的Button组件
http://blog.csdn.net/DelphiTeacher/article/details/8923481 在FireMonkey iOS应用程序中的按钮 FireMoneky定义了不同类型 ...
- IOS在一个程序中启动另一个程序
尽管iPhone不允许同时运行两个应用程序,我们可以从自己的应用程序中启动另一个应用程序,并且可以在应用程序之间共享数据.我们可以使用UIApplication类的openURL:方法从一个应用程序来 ...
- Xcode中iOS模拟器程序中的plist路径
Xcode6.4里写了个简单的iOS程序在模拟器中跑. 其中用到了NSUserDefaults来保存属性文件plist,那么这个文件实际路径在哪里呢?在网上搜了一下,发现几种说法(*表示当前用户名): ...
- 在iOS应用程序中打开设备设置界面及其中某指定的选项界面
摘自:http://stackoverflow.com/questions/8246070/ios-launching-settings-restrictions-url-scheme [[UIApp ...
随机推荐
- Redis for .NET 系列之实现分页需求
代码笔记: var tableName = "Table1"; redisClient.AddItemToSortedSet(tableName, ); redisClient.A ...
- underflow 、overflow 下溢和上溢
在strtoull函数返回值中,就提到上溢和下溢的问题,现在把这俩个概念拿出来涨涨见识! 上溢 Overflow 是当一个超长的数据进入到缓冲区时,超出部分被写入上级缓冲区,上级缓冲区存放的可能是数 ...
- 一款符合当前主流审美的Swing外观(Look and Feel)_测试版发布
[前言] 本文将展示的是一款J2SE平台Swing外观(Look and Feel)实现,目前给出的演示jar包仅供测试之用,主体工作已经完成,余下是兼容性测试和调整,附件中的演示jar包推荐运行于j ...
- web 开发前端学习
调试插件:http://www.getpostman.com/ http://bootstrap.evget.com/javascript.html bootstrap: http://www.bo ...
- 郝斌C语言代码
#include<stdio.h> int main() { ; printf("%#x\n",a); ; } /* output 0xf; */ //(15)10= ...
- Codeforces Round #270 1003
Codeforces Round #270 1003 C. Design Tutorial: Make It Nondeterministic time limit per test 2 second ...
- tc 147 2 PeopleCircle(再见约瑟夫环)
SRM 147 2 600PeopleCircle Problem Statement There are numMales males and numFemales females arranged ...
- tc 146 2 BridgeCrossing(n人过桥问题)
SRM 146 2 1000BridgeCrossing Problem Statement A well-known riddle goes like this: Four people are c ...
- 开关WIFI脚本
title wifi管理color A@echo on@echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~@echo 1.启用并设定虚拟WiFi网卡;@echo 2.开启无线网络; ...
- 01WebApi防篡改机制---HMAC机制
防篡改,顾名思义就是防止有人恶意篡改请求数据URL以达到恶意攻击的目的,那要怎么才能实现这样的目的呢? 很简单,将要请求的数据加上合作号.合作Key按规则组织成一个字符串,获取对应的MD5摘要,然后将 ...