• 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 数据库保存好信息,在客户端拉取就行了!对于个人开发者是个大大的福音啊!

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

  • 相关阅读:
    c语言 423输出直角在右上角的等腰直角三角形
    R语言中aggregate函数进行整合数据
    c语言 425输出向下的金字塔
    C语言 423 输出直角在左上角的等腰直角三角形
    c语言 422 显示出一个横向较长的长方形
    R语言中subset函数
    R语言中for、while、if else、switch语句
    c语言 424 输出金字塔性状
    R语言中apply函数
    WinCE文件基本操作
  • 原文地址:https://www.cnblogs.com/breezemist/p/5015559.html
Copyright © 2020-2023  润新知