Tag: Ckshare

CK分享一步一步

共享CloudKit项目的指南 CKSharing是在WWDC 2016上引入的,它是他们的两个开发者演示的主要部分:CloudKit最佳实践和CloudKit的新功能。 通常,当有人说我需要在进行编码项目之前观看WWDC视频时,我通常会之以鼻,但这绝对是对的。 您确实必须观看这两个视频,才能对正在发生的事情有基本的了解。 而且,CloudKit 共享可能是我见过的Apple发布的Tentpole库中记录最少的主要功能。 写这篇文章几乎是公民的责任,这样其他人就不会像我所做的那样挣扎。 缺乏文档的原因之一是,我不认为CloudKit被开发人员经常使用。 与我交谈的大多数开发人员朋友都非常忙于使用JSON解析自定义后端,Firebase等…,以至于不介意最新和最出色的CloudKit产品是什么。 他们的损失! 该项目: 我从事应用程序开发已经有几年了(无论是打开还是关闭,大部分时间都是关闭的),可以帮助我追踪员工的工作时间。 这个概念很简单:有一个Manager ,他们有一个向他/她报告工作时间的Employee 。 允许员工自己添加,编辑,删除工时,并且经理在任何情况下都会收到通知。 然后,该应用将所有这些时间加起来,以便可以计算出工资单。 您可以想象,可以轻松地从这样的结构中构建其他功能,例如创建工资单,计算预扣税等。我们将只关注共享时间部分。 CloudKit结构: 由于一个经理可以有多个员工,因此我们在架构中需要一个Employee CKRecord类型。 它将包含名称,地址,工资率等…作为值。 这些小时将由我也在架构中创建的WorkEvent CKRecord表示。 每个WorkEvent都有一个startTime,endTime,注释等…以及对Employee的引用。 现在我们只需要一个放置这些记录的地方。 公共数据库:在这里存储您希望每个人都可以访问的内容。 公共数据库中没有自定义区域,默认区域中所有内容都存在。 我们的数据(上述)显然是这两个方的私有数据,因此使用公共数据库是不可以的。 可以通过密钥共享来公开进行操作,但是基本上是通过模糊处理来实现安全性,这不理想。 私有数据库:您可以在其中存储不想让公众看到的记录 。 专用数据库具有默认区域,用户可以创建自定义区域。 重要提示 :将您要共享的任何内容放在私有数据库的自定义区域中。 对于此应用程序,管理中心将使用他/她的私有数据库来存储该应用程序的所有记录。 我们将为每个员工创建一个自定义区域,其中将有一个Employee CKRecord和许多WorkEvent CKRecords。 经理将订阅其私有数据库中的更改。 共享数据库:此数据库包含您已被授予访问权限的“对象的窗口”。 您在共享数据库中看到的记录存在于其他人的私有数据库中。 您只是有一个进入该对象的窗口 。 换句话说,您是共享数据库中项目的“贡献者”,而不是所有者。 对于此应用程序,员工将通过共享数据库访问其WorkEvents和Employee CKRecords。 他们将订阅共享数据库中的更改。 Manager的共享数据库中将没有任何区域,因为该信息位于其私有数据库中。 了解这一点非常重要。 注意:不要让术语“共享区域”绊倒您。 没有CKRecordZone这样的东西,您可以将记录放到与其他用户自动共享的地方。 共享区域只是为您创建的用于访问和添加共享记录的区域,但是它本身不会导致对象被共享,这将在以后进行介绍。 这将是什么样的: […]