区块链技术博客
www.b2bchain.cn

【WWDC201 10086】CloudKit 新特性求职学习资料

本文介绍了【WWDC201 10086】CloudKit 新特性求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

作者:DXL,iOS 开发者,就职于猿辅导。

审核:红纸,iOS 开发,老司机技术周报编辑,就职于淘系技术部

本文基于WWDC2021 Session 10086 梳理

引子

【WWDC201 10086】CloudKit 新特性

同时作为一名 Apple 生态的消费者,通过 iCloud,我可以在 Mac,iPad,iPhone 上完成无缝的写作,阅读,音乐体验;更新设备后,Photo,Music ,Data,已静静的躺在新手机里等待我的使用。沉浸在 iCloud 带给我们的无限便利。

作为一名 iOS 开发者,使用 iCloud 可以让我们自己的 App 拥有了后台的能力,可以实现多台设备数据同步的功能,也可以让其他用户访问你的 public data。苹果给了一个非常好的解决方案,让你专注于 App 的设计和实现。

今天让我们谈一谈 iCloud 背后的能力 – CloudKit。

目录

  • Recap
  • Swift concurrency
  • Encrypted fields
  • Zone Sharing

Recap

我们用 Wechat App 来解释下什么是 CKContainer 中的 Public/Private/Shared Database (假定我们用 CloudKit 实现了微信的后台功能)

  1. Public Database

每一个 iCloud Container 容器(一般一个 App 只有一个 Container)都有一个 Public Database 公共数据库,这个数据库允许使用这个 App 的所有用户访问.比如在微信中可根据微信账号搜索到其他人,就是因为,所有人的账号信息都保存在微信 App 中 iCloud 云端的 Public Database 中。

  1. Private Database

私有数据库就像是每一个用户在自己的 iCloud 存储中的一个文件(当然, 在 iCloud Drive 中没法看到这个文件,类似一个沙盒文件,只有这个 Private Database的 App 能否访问)

  1. Shared Database

CKShare 赋予了用户把自己的私有数据库的数据共享给其他人的能力,比如用户发布了朋友圈,这些数据就存储在 shared Database 中,可以让朋友们随时随地得获取数据,分享快乐。

Swift concurrency

使用过 CloudKit 构建自己 App 的同学都知道,CloudKit 重度使用 Operation 来进行本地数据和 iCloud 上数据的传输,保证其原子性,安全性,和便利性。 通过使用 Swift 引入的并发相关的 API,让开发者写出质量更好,更易懂的异步操作代码。

Swift Aysnc/Await

对于掌握 CloudKit 内部的 Operation 操作是有一定门槛的,使用起来不够爽,随着Swift 5.5的 Realese,CloudKit API 也支持了 Swift aysnc、await的能力! (具体可以参见Meet async/await in Swift)
其实这两个 API 就是解決异步带来的代码嵌套以及代码混乱的问题,如果你用基于 CallBack 的 API,代码顺序就会被打乱,窜来窜去,然后异常捕捉也比较麻烦,一个简单的 Try Catch 就能搞定的事,需要写一大堆重复的错误处理代码,而有了 async/await 以后,这事就迎刀而解了,基本上你就可以用你写同步 sync 代码的方式来写 async 代码,在它 suspend需要挂起的地方,你用 await/标记一下就好了。 Talk is cheap,show me the code。

以前,删除某个 CKContainer 中数据的代码如下所示:

【WWDC201 10086】CloudKit 新特性

上面的代码,充斥大量的 Optional值,解包,其他人想了解上面代码做什么事的时候,不一定能第一时间 Get 到。看一下使用 CloudKit Async Function 之后,代码有什么改善。代码看起来简单多了,不需要再 Callback 闭包中各种判断,就像是同步代码一样简单,线性。

【WWDC201 10086】CloudKit 新特性

Per-item callbacks

比如遇到下面这种情况,通过几个 RecordID 获取对应的 Records,但是发现其中有一个获取失败了,捕获到 CKError.unknownItem,整体 Operation 捕获到了 CKError.partialFailure 错误

【WWDC201 10086】CloudKit 新特性

过去起代码如下所示:

【WWDC201 10086】CloudKit 新特性

其中,对应某个 recordId 的 perItemCompletionBlock 已经包含了该 item 获取失败的回调,但是底部整个 Operation的 fetchCompletionBlock中捕获到的 CKError.partialFailure 中,通过 recordId 又重复包含了一次某个 Record 获取失败的回调,信息重复是完全没有必要的。使用 Swift.Result 这种类型,完美解决信息重复的问题,上面的代码使用 Swift.Result 类型之后改进为:

【WWDC201 10086】CloudKit 新特性

作者:DXL,iOS 开发者,就职于猿辅导。

审核:红纸,iOS 开发,老司机技术周报编辑,就职于淘系技术部

本文基于WWDC2021 Session 10086 梳理

引子

【WWDC201 10086】CloudKit 新特性

同时作为一名 Apple 生态的消费者,通过 iCloud,我可以在 Mac,iPad,iPhone 上完成无缝的写作,阅读,音乐体验;更新设备后,Photo,Music ,Data,已静静的躺在新手机里等待我的使用。沉浸在 iCloud 带给我们的无限便利。

作为一名 iOS 开发者,使用 iCloud 可以让我们自己的 App 拥有了后台的能力,可以实现多台设备数据同步的功能,也可以让其他用户访问你的 public data。苹果给了一个非常好的解决方案,让你专注于 App 的设计和实现。

今天让我们谈一谈 iCloud 背后的能力 – CloudKit。

目录

  • Recap
  • Swift concurrency
  • Encrypted fields
  • Zone Sharing

Recap

我们用 Wechat App 来解释下什么是 CKContainer 中的 Public/Private/Shared Database (假定我们用 CloudKit 实现了微信的后台功能)

  1. Public Database

每一个 iCloud Container 容器(一般一个 App 只有一个 Container)都有一个 Public Database 公共数据库,这个数据库允许使用这个 App 的所有用户访问.比如在微信中可根据微信账号搜索到其他人,就是因为,所有人的账号信息都保存在微信 App 中 iCloud 云端的 Public Database 中。

  1. Private Database

私有数据库就像是每一个用户在自己的 iCloud 存储中的一个文件(当然, 在 iCloud Drive 中没法看到这个文件,类似一个沙盒文件,只有这个 Private Database的 App 能否访问)

  1. Shared Database

CKShare 赋予了用户把自己的私有数据库的数据共享给其他人的能力,比如用户发布了朋友圈,这些数据就存储在 shared Database 中,可以让朋友们随时随地得获取数据,分享快乐。

Swift concurrency

使用过 CloudKit 构建自己 App 的同学都知道,CloudKit 重度使用 Operation 来进行本地数据和 iCloud 上数据的传输,保证其原子性,安全性,和便利性。 通过使用 Swift 引入的并发相关的 API,让开发者写出质量更好,更易懂的异步操作代码。

Swift Aysnc/Await

对于掌握 CloudKit 内部的 Operation 操作是有一定门槛的,使用起来不够爽,随着Swift 5.5的 Realese,CloudKit API 也支持了 Swift aysnc、await的能力! (具体可以参见Meet async/await in Swift)
其实这两个 API 就是解決异步带来的代码嵌套以及代码混乱的问题,如果你用基于 CallBack 的 API,代码顺序就会被打乱,窜来窜去,然后异常捕捉也比较麻烦,一个简单的 Try Catch 就能搞定的事,需要写一大堆重复的错误处理代码,而有了 async/await 以后,这事就迎刀而解了,基本上你就可以用你写同步 sync 代码的方式来写 async 代码,在它 suspend需要挂起的地方,你用 await/标记一下就好了。 Talk is cheap,show me the code。

以前,删除某个 CKContainer 中数据的代码如下所示:

【WWDC201 10086】CloudKit 新特性

上面的代码,充斥大量的 Optional值,解包,其他人想了解上面代码做什么事的时候,不一定能第一时间 Get 到。看一下使用 CloudKit Async Function 之后,代码有什么改善。代码看起来简单多了,不需要再 Callback 闭包中各种判断,就像是同步代码一样简单,线性。

【WWDC201 10086】CloudKit 新特性

Per-item callbacks

比如遇到下面这种情况,通过几个 RecordID 获取对应的 Records,但是发现其中有一个获取失败了,捕获到 CKError.unknownItem,整体 Operation 捕获到了 CKError.partialFailure 错误

【WWDC201 10086】CloudKit 新特性

过去起代码如下所示:

【WWDC201 10086】CloudKit 新特性

其中,对应某个 recordId 的 perItemCompletionBlock 已经包含了该 item 获取失败的回调,但是底部整个 Operation的 fetchCompletionBlock中捕获到的 CKError.partialFailure 中,通过 recordId 又重复包含了一次某个 Record 获取失败的回调,信息重复是完全没有必要的。使用 Swift.Result 这种类型,完美解决信息重复的问题,上面的代码使用 Swift.Result 类型之后改进为:

【WWDC201 10086】CloudKit 新特性

作者:DXL,iOS 开发者,就职于猿辅导。

审核:红纸,iOS 开发,老司机技术周报编辑,就职于淘系技术部

本文基于WWDC2021 Session 10086 梳理

引子

【WWDC201 10086】CloudKit 新特性

同时作为一名 Apple 生态的消费者,通过 iCloud,我可以在 Mac,iPad,iPhone 上完成无缝的写作,阅读,音乐体验;更新设备后,Photo,Music ,Data,已静静的躺在新手机里等待我的使用。沉浸在 iCloud 带给我们的无限便利。

作为一名 iOS 开发者,使用 iCloud 可以让我们自己的 App 拥有了后台的能力,可以实现多台设备数据同步的功能,也可以让其他用户访问你的 public data。苹果给了一个非常好的解决方案,让你专注于 App 的设计和实现。

今天让我们谈一谈 iCloud 背后的能力 – CloudKit。

目录

  • Recap
  • Swift concurrency
  • Encrypted fields
  • Zone Sharing

Recap

我们用 Wechat App 来解释下什么是 CKContainer 中的 Public/Private/Shared Database (假定我们用 CloudKit 实现了微信的后台功能)

  1. Public Database

每一个 iCloud Container 容器(一般一个 App 只有一个 Container)都有一个 Public Database 公共数据库,这个数据库允许使用这个 App 的所有用户访问.比如在微信中可根据微信账号搜索到其他人,就是因为,所有人的账号信息都保存在微信 App 中 iCloud 云端的 Public Database 中。

  1. Private Database

私有数据库就像是每一个用户在自己的 iCloud 存储中的一个文件(当然, 在 iCloud Drive 中没法看到这个文件,类似一个沙盒文件,只有这个 Private Database的 App 能否访问)

  1. Shared Database

CKShare 赋予了用户把自己的私有数据库的数据共享给其他人的能力,比如用户发布了朋友圈,这些数据就存储在 shared Database 中,可以让朋友们随时随地得获取数据,分享快乐。

Swift concurrency

使用过 CloudKit 构建自己 App 的同学都知道,CloudKit 重度使用 Operation 来进行本地数据和 iCloud 上数据的传输,保证其原子性,安全性,和便利性。 通过使用 Swift 引入的并发相关的 API,让开发者写出质量更好,更易懂的异步操作代码。

Swift Aysnc/Await

对于掌握 CloudKit 内部的 Operation 操作是有一定门槛的,使用起来不够爽,随着Swift 5.5的 Realese,CloudKit API 也支持了 Swift aysnc、await的能力! (具体可以参见Meet async/await in Swift)
其实这两个 API 就是解決异步带来的代码嵌套以及代码混乱的问题,如果你用基于 CallBack 的 API,代码顺序就会被打乱,窜来窜去,然后异常捕捉也比较麻烦,一个简单的 Try Catch 就能搞定的事,需要写一大堆重复的错误处理代码,而有了 async/await 以后,这事就迎刀而解了,基本上你就可以用你写同步 sync 代码的方式来写 async 代码,在它 suspend需要挂起的地方,你用 await/标记一下就好了。 Talk is cheap,show me the code。

以前,删除某个 CKContainer 中数据的代码如下所示:

【WWDC201 10086】CloudKit 新特性

上面的代码,充斥大量的 Optional值,解包,其他人想了解上面代码做什么事的时候,不一定能第一时间 Get 到。看一下使用 CloudKit Async Function 之后,代码有什么改善。代码看起来简单多了,不需要再 Callback 闭包中各种判断,就像是同步代码一样简单,线性。

【WWDC201 10086】CloudKit 新特性

Per-item callbacks

比如遇到下面这种情况,通过几个 RecordID 获取对应的 Records,但是发现其中有一个获取失败了,捕获到 CKError.unknownItem,整体 Operation 捕获到了 CKError.partialFailure 错误

【WWDC201 10086】CloudKit 新特性

过去起代码如下所示:

【WWDC201 10086】CloudKit 新特性

其中,对应某个 recordId 的 perItemCompletionBlock 已经包含了该 item 获取失败的回调,但是底部整个 Operation的 fetchCompletionBlock中捕获到的 CKError.partialFailure 中,通过 recordId 又重复包含了一次某个 Record 获取失败的回调,信息重复是完全没有必要的。使用 Swift.Result 这种类型,完美解决信息重复的问题,上面的代码使用 Swift.Result 类型之后改进为:

【WWDC201 10086】CloudKit 新特性

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 【WWDC201 10086】CloudKit 新特性求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们