iCloud 相信大家已经不陌生了,它可以为用户存储自己的数据,并且在多个设备间同步。而今天我们介绍的 CloudKit 是另外一个强大的服务,它是一个云存储服务,我们开发的 APP 可以用它作为服务端数据存储,这样我们就不必自己管理服务端的性能这类问题了,并且它是完全免费的。
为何需要云服务
作为一个 APP 开发者,相信大家开发 APP 的时候或多或少都会需要服务端来支持,无论是新闻 APP 的新闻内容,又或是社交 APP 的服务端支持。而关于服务端的开发,又是一个很大的工程,不单单是简单提供数据这么简单,随着 APP 用户量的增长,我们还要处理诸如服务端性能,以及稳定性这类非功能性的问题,这对于小的开发团队来说,无疑是一个很大的投入。
为了解决这个问题,出现了很多第三方云服务,比如 leancloud.cn。这些云端服务,将诸如服务端性能,稳定性,以及日常维护这些非功能性的工作很好的处理了起来,这样我们开发者就可以专注于我们的 APP 开发,而不用去管理这些繁杂的服务端细节了。
除了这些第三方的云服务,苹果自家也推出了自己的云服务 CloudKit, 它的好处是和 iOS 系统无缝结合,并且官方提供了 API,集成这个云服务非常的容易。并且苹果提供服务端的整体运营,我们不必再进行处理诸如性能,安全性等这些问题。
下面我们就来看看如何使用 CloudKit 吧。
打开 CloudKit
为应用开启 CloudKit 支持非常的容易,只需要在 XCode 中的 Capabilities 选项卡中找到 iCloud 选项,并打开开关:
然后选中 CloudKit 复选框,就完成 CloudKit 的设置了。设置完成后,我们点击 CloudKit Dashboard 按钮,可以打开 CloudKit 管理后台:
从开启到进入后台管理,只需要点几个按钮,中途输入以下开发者账号,就完成了,非常的简便。接下来咱们了解一下后台管理功能。
在 Scheme 分类中,我们可以进行表结构的设置,比如我们创建一个实体叫做 Book:
实体创建完成后,我们就可以在代码中操作这个数据实体了。比如我们可以这样创建一个 Book 实例。
引入 CloudKit 库:
import CloudKit
打开数据库连接:
let publicDB = CKContainer.defaultContainer().publicCloudDatabase
创建记录:
let bookID = CKRecordID(recordName: "Book 1")
let book = CKRecord(recordType: "Book", recordID: bookID)
book.setValue("Swift", forKey: "name")
book.setValue("Cook", forKey: "author")
保存记录:
publicDB.saveRecord(book) { savedRecord , error in
if error == nil {
print("success")
}else {
print(error)
}
}
这样我们的数据库操作就完成了,CloudKit 会帮我们将数据记录上传到云服务器中,我们在 CloudKit 管理界面中也可以看到这条记录:
不需要配置任何服务端,也不需要我们自己进行数据库管理,云服务的集成就这样完成了。怎么样非常的方便吧。
读取 CloudKit 数据
我们可以添加数据,还可以查询数据,接下来我们还是用 CloudKit 来读取我们刚才插入的内容:
let query = CKQuery(recordType: "Book", predicate: NSPredicate(value: true))
publicDB.performQuery(query, inZoneWithID: nil) { (records: [CKRecord]?, error) -> Void in
for record in records! {
print(record.valueForKey("name")!)
}
}
我们这里使用 publicDB
的 performQuery
方法,传入一个 Query 对象,指定了我们的查询条件。
结语
通过 CloudKit,我们非常简单的就实现了整套的服务端和客户端交互的流程,而且为我们节省了很多时间。现在我们要做的只是将数据模型定义好,然后调用 CloudKit API 进行数据存取操作即可。完全不需要处理服务端配置等这些繁琐的工作了。
更多精彩内容可关注微信公众号:
swift-cafe
网友评论