Creating a Database Schema by Saving Records

通过保存记录创建一个数据库模式

在开发过程中,可以很容易地创建一个使用CloudKit API的模式。当您保存记录对象的数据库,相关的记录类型和他们的领域会自动为您创建。此功能称为just-in-time时间模式,只有当您使用的开发环境,这是不是在商店出售的应用程序访问可用。例如,在开发过程中,你可以使用那些存储在属性列表测试记录CloudKit数据库。

本章介绍了一些CloudKit API和包含的代码片段。添加#import<CloudKit/ CloudKit.h>在使用CloudKit类和方法的每一个实现文件的顶部。阅读CloudKit框架 CloudKit Framework Reference参考有关CloudKit API的细节。

About Designing Your Schema

设计CloudKit模式来存储你的应用程序的对象模型,你要坚持的部分。如果要实现从无到有的应用程序,使用模型 - 视图 - 控制器设计模式,从模型对象分开的用户界面视图。然后设计出有效的存储要存储在iCloud中的对象模型的部分的架构。

单独的数据到记录类型

一个CloudKit架构包含有一个名字,字段和其他元数据的一个或多个记录类型。字段类型相似,添加了一些新的允许属性列表类型。使用对于从记录分别存储大容量数据的专用资产类型,位置类型用于有效查询的地理坐标,以及参考类型来表示一对酮和一到多条记录之间的关系。记录的最大大小为1MB,所以使用资产类型(而不是字节型)的大数据。

该表列出了可能的字段类型及其等价类。

Field Type

Class

Description

Asset

CKAsset

A large file that is associated with a record but stored separately

Bytes

NSData

A wrapper for byte buffers that is stored with the record

Date/Time

NSDate

A single point in time

Double

NSNumber

A double

Int(64)

NSNumber

An integer

Location

CLLocation

A geographical coordinate and altitude

Reference

CKReference

A relationship from one object to another

String

NSString

An immutable text string

List

NSArray

Arrays of any of the above field types

使用这些字段来存储您的应用程序的持久性数据设计的记录类型。例如,该草图主从用户界面的显示图稿的标题在主界面的集合(在左边栏)和所选作品在细节接口属性(右侧区域)。底层的对象模型由一个 Artwork和 Artist类的 Artwork的地方有一个一对一的关系。

有一个在这个对象模型中的对象和记录类型艺术品和艺术家之间有一个一对一的映射。该作品记录类型的艺术家字段是引用类型与引用一个艺术家的记录。象场是含有一个URL的资产类型,位置字段是用经度和纬度特性的位置类型。在艺术品和艺术家的所有其他字段都是简单的String和Date类型。

Decide on Names for Your Records为您记录 决定一个启发式的创造独特的名字。再加上一个记录带(一个数据库的一个分区)的记录名称是表示一个记录在数据库中的位置的记录标识符。该记录名称可以使用另一个数据源或使内部记录区是唯一的字符串相结合的外键。例如,艺术品记录的记录名可以结合一个艺术家的第一个和最后一个名字与目录编号,作为字符串。如果您在使用CloudKit仪表板创造的记录,一个唯一的ID自动分配给该记录。

Create Records

首先创建一个记录标识符,CKRecordID类的实例,指定的记录名称和记录区。然后创建一个记录时,CKRecord类的一个实例,通过记录标识。设置使用键 - 值编码式的方法记录的字段。

创建一个记录

1.创建一个记录ID指定一个唯一的记录名。

CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"115"];

2.创建一个记录对象。

CKRecord *artworkRecord = [[CKRecord alloc] initWithRecordType:@"Artwork" recordID:artworkRecordID];

3.设置记录的字段。

artworkRecord[@"title" ] = @"MacKerricher State Park";
artworkRecord[@"artist"] = @"Mei Chen";
artworkRecord[@"address"] = @"Fort Bragg, CA";

Save Records

首先选择一个数据库,在那里你将节省的记录(公共,私人或自定义),然后保存记录。如果一个记录类型不备案存在,它会为您创建。

保存记录

1.获取你的应用程序的默认容器的数据库。
要获得公共数据库:

CKContainer *myContainer = [CKContainer defaultContainer];
CKDatabase *publicDatabase = [myContainer publicCloudDatabase];

获得私有的数据库:

CKContainer *myContainer = [CKContainer defaultContainer];
CKDatabase *privateDatabase = [myContainer privateCloudDatabase];

得到一个自定义容器:

CKContainer *myContainer = [CKContainer containerWithIdentifier:@"iCloud.com.example.ajohnson.GalleryShared"];

要通过创建多个应用程序共享一个自定义的容器,读 Share Containers Between Apps .

2.保存记录

[publicDatabase saveRecord:artworkRecord completionHandler:^(CKRecord *artworkRecord, NSError *error){
   if (!error) {
      // Insert successfully saved record code
   }
   else {
      // Insert error handling
    }
}];

如果记录类型不存在,CloudKit框架设置的域创建它。
在点击在Xcode的运行按钮,输入iCloud的凭据在设备上,如在下一节中所述。

Enter iCloud Credentials Before Running Your App

在生产中,默认权限允许未经身份验证的用户读取公共数据库中的记录,但不允许他们写的记录。因此,你运行你的应用程序,并记录保存到数据库之前,请在设置中的iCloud帐户在Mac上的iOS和系统偏好设置。也允许icloud的驱动器。后来当需要iCloud的凭据,正如在   Alert the User to Enter iCloud Credentials描述的一样,显示一个对必要错误处理的对话框给用户。

在发展中,当您通过的Xcode在iOS模拟器或iOS设备上运行你的应用程序,您还需要输入iCloud的凭据来读取公共数据库中的记录。

要运行在iPhone模拟器的应用程序,请在iPhone模拟器中的iCloud凭据您选择的模拟器,然后单击在Xcode的运行按钮之前。您需要执行这些步骤为每个iPhone模拟器你在Xcode计划弹出的菜单中选择。

进入的iOS模拟器的iCloud凭据

1.选择的Xcode>打开开发工具> iPhone模拟器。
2.在iPhone模拟器,选择硬件>首页。
3.启动设置应用程序并点击iCloud中。

4.输入Apple ID和密码。
5.点击登录。
等待的iOS验证的iCloud帐户。
6.要启用iCloud的驱动器,单击icloud的驱动开关。
如果交换机没有出现,icloud的驱动器已经启用。

对于如何创建的iCloud账户,请阅读 Create an iCloud Account for Development.

Alert the User to Enter iCloud Credentials

保存记录之前,请验证用户登录到自己的iCloud账户。如果用户没有登录,提出了一个警告,指示如何进入自己的iCloud凭据并启用iCloud的驱动器的用户。

[[CKContainer defaultContainer] accountStatusWithCompletionHandler:^(CKAccountStatus accountStatus, NSError *error) {
    if (accountStatus == CKAccountStatusNoAccount) {
        UIAlertController *alert = [UIAlertController alertControllerWithTitle:@"Sign in to iCloud"
                                                                       message:@"Sign in to your iCloud account to write records. On the Home screen, launch Settings, tap iCloud, and enter your Apple ID. Turn iCloud Drive on. If you don't have an iCloud account, tap Create a new Apple ID."
                                                                preferredStyle:UIAlertControllerStyleAlert];
        [alert addAction:[UIAlertAction actionWithTitle:@"Okay"
                                                  style:UIAlertActionStyleCancel
                                                handler:nil]];
        [self presentViewController:alert animated:YES completion:nil];
    }
    else {
        // Insert your just-in-time schema code here
    }
}];

要了解有关保存记录时可能出现的错误,请阅读   CloudKit Framework Constants Reference .

Run Your App

在Xcode中,运行你的应用程序来执行保存记录,并在数据库中创建架构的代码。

Verify Your Steps

使用CloudKit控制板,以验证记录类型加入的模式和该记录被添加到数据库中。

利用CloudKit仪表板视图记录类型

验证记录类型有正确的字段名称和类型。

查看记录类型

1.在 CloudKit Dashboard标记出。

2.在左上角选择使用从弹出菜单中你的应用程序容器。
如果只有一个应用程序,允许使用CloudKit,其默认容器的名称,不显示弹出菜单。

警告:如果容器ID不会立即出现在CloudKit仪表盘,尝试注销,并登录到CloudKit仪表盘了。如果你只是启用CloudKit,可能需要一段时间来创建容器并出现在CloudKit仪表盘。

3.在左列中,单击记录类型。
添加的记录类型出现在第二列。
4.在第二列中,选择一个记录类型。
字段名称和类型显示在右侧的细节区域。

出现的用户记录类型是不能被删除的保留的系统记录类型,但可以将字段添加到它。

启用元数据ID指标

所有使用刚刚在时间模式中创建的记录类型的元数据索引默认情况下禁用。记录ID查询索引需要启用相应的记录CloudKit仪表盘查看。

要启用记录ID查询索引

1.在左列中,单击记录类型,然后选择一个记录类型。
2.点击下元数据索引的索引三角形。
3.选择ID行中的查询框,然后点击保存。

查看记录使用CloudKit仪表板

请确认您保存记录所有的数据。

查看记录

1.在CloudKit仪表盘的左侧栏中,单击默认区域下的公共数据和私有数据。
记录出现在第二列中。 (如果您不使用自定义区域,记录存储在公共默认区域。)

2.在第二列中,单击一个记录。
记录键 - 值对出现在右侧细节区域。

概括

在本章中,您学习了如何:

通过编程方式保存记录创建模式
多个应用程序之间共享集装箱的ID
使用CloudKit仪表板,查看您所创建的记录类型和记录

iCloud之创建一个数据库通过保存记录相关推荐

  1. mysql 中修改对象_在MySQL中,创建一个数据库后,还可以对象其进行修改,不过这里的修改是指可以修改被创建数据库的相关参数,也可以修改数据库名。...

    [多选题]注射时,在(  )情况下,采用较高的注射速率. [单选题]通常,所设置的模具温度是指和制品接触的模腔内表面在(   ). [单选题]反映某一事件发生强度的指标应选用 [判断题]当试样制备之后 ...

  2. 11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001

    11gR2RAC环境DBCA创建一个数据库错误ORA-15055 ORA-15001 象: 在11gR2 GridInfrastructure和Database软件安装完毕之后,运行DBCA创建数据库 ...

  3. PostgreSQL创建一个数据库

    看看你能否访问数据库服务器的第一个例子就是试着创建一个数据库.一台运行着的 PostgreSQL 服务器可以管理许多数据库.通常我们会为每个项目和每个用户单独使用一个数据库. 节点管理员可能已经为你创 ...

  4. 创建一个数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)

    创建一个数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四个表的结构分别如表1-1的表(一)~表(四)所示,数据如表1-2的 ...

  5. 选择数据库失败,可能是你没权限,请预先创建一个数据库

    一.问题描述 空间上直接安装DEDECMS,出现下面的问题: "选择数据库失败,可能是你没权限,请预先创建一个数据库" 二.解决方法: 解决办法是,数据库名称那个选项,填空间商提供 ...

  6. Python音频处理:创建一个正弦波并保存为wav文件

    Python音频处理:创建一个正弦波并保存为wav文件 0. 预备知识 0.1 数字信号基础 0.2 声学概念基础 1. 创建一个正弦波 2. 保存为wav文件 0. 预备知识 0.1 数字信号基础 ...

  7. 设要为某工厂设计一个数据库,需要记录如下信息(有下划线的信息可作为唯一标识): •产品有产品名、规格; •每种产品拥有多道加工工序,每道加工工序只适用于一种产品; •每道工序需要记录相关的工序编

    题目要求 设要为某工厂设计一个数据库,需要记录如下信息(有下划线的信息可作为唯一标识): 产品有产品名.规格: 每种产品拥有多道加工工序,每道加工工序只适用于一种产品: 每道工序需要记录相关的工序编号 ...

  8. oracle简易版创建数据库,oracle创建一个数据库三步走

    以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...

  9. linux 创建一个数据库,Linux下手动创建一个数据库

    这是自己手动创建一个Oracle数据库的过程. 在Linux下虽然通过dbca也可以创建数据库,但是在某些环境下却是不能使用图形环境,如数据库服务器在机房,并且开放的端口有限制,或者需要批量创建数据库 ...

最新文章

  1. 1.svn无法连接,2.svn日志无法显示,3.日志无法修改
  2. FFLIb Demo CQRS
  3. ORACLE监听问题
  4. 【BZOJ3831】Little Bird,单调队列优化DP
  5. keil5函数 默认返回值_Python列表有什么内置函数可以使用,怎么使用这些函数
  6. Android学习笔记---26_采用JSON格式返回数据给资讯客户端,效率上要高于xml文件解析和传输
  7. [论文阅读] Cost-Effective Active Learning for Deep Image Classification
  8. Python菜鸟入门:day15编程学习
  9. 一道不起眼的面试题,但被头条面试官玩出了花,48张图,2个动画,带你还原面试现场
  10. Spring Boot 配置文件bootstrap和application的加载顺序
  11. LINUX下载编译YASM
  12. 产品经理的段位——说说腾讯的产品职级
  13. 软件测试的方法有哪些?
  14. db2 9.5 linux,DB2 8.2 9.1 9.5 9.7 下载地址
  15. html播放器滚动字幕,HTML 滚动字幕
  16. JavaScript 开发者的 5 款必备工具
  17. 2016网吧服务器系统,原版系统一键优化精简方案(Win10/Server2016/Server2019)
  18. 用算法判断输入的一个数是几位数
  19. 数字化势不可挡:“衣食住行”的升级之战,行业巨头如何破局
  20. 12点转成0点(原因时间格式化为十二小时制导致)

热门文章

  1. H3C交换机光电复用口如何切换(图文详解)
  2. 关于vue点击切换element小图标问题
  3. ssm框架整合log4j2搭建
  4. Latex如何首行不空格/不缩进
  5. 算云融合促发展,天翼云以领先云网算力助推数字中国建设!
  6. 自考东北林业大学计算机软件,东北林业大学自考2020年招生简章
  7. Shader中Smoothstep和Lerp的区别
  8. eggjs 创建应用知识点
  9. 服务百万商家的系统,发布风险如何规避?微盟全链路灰度实践
  10. win7怎么修改开机密码(最快) win7修改开机密码最便捷的方法