CloudKit快速入门之04 取得记录 (SwiftUI iCloud CloudKit中文文档手册教程)
2023-09-11 14:18:48 时间
取得记录
将记录保存到数据库后,可以使用不同的机制来检索它们。通过记录ID提取单个记录,或使用谓词查询许多记录。(谓词定义了用于搜索记录的逻辑条件。)通常,您获取记录的子集以在启动时向用户显示,然后订阅用户感兴趣的更改。
如果使用Location
字段类型,则还可以按照地理位置获取记录中的描述获取地理区域内的记录。
通过标识符获取记录
如果您知道要获取的记录的记录ID,则可以按单个记录ID进行获取。例如,此代码片段获取名为的记录115
。
CKDatabase *publicDatabase = [[CKContainer defaultContainer] publicCloudDatabase];
CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"115"];
[publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord *artworkRecord, NSError *error) {
if (error) {
// Error handling for failed fetch from public database
}
else {
// Display the fetched record
}
}];
提取和修改记录
您可以获取,修改和保存对单个记录所做的更改。此代码片段获取一条Artwork记录,更改其date字段值,并将其保存到数据库。
// Fetch the record from the database
CKDatabase *publicDatabase = [[CKContainer defaultContainer] publicCloudDatabase];
CKRecordID *artworkRecordID = [[CKRecordID alloc] initWithRecordName:@"115"];
[publicDatabase fetchRecordWithID:artworkRecordID completionHandler:^(CKRecord *artworkRecord, NSError *error) {
if (error) {
// Error handling for failed fetch from public database
}
else {
// Modify the record and save it to the database
NSDate *date = artworkRecord[@"date"];
artworkRecord[@"date"] = [date dateByAddingTimeInterval:30.0 * 60.0];
[publicDatabase saveRecord:artworkRecord completionHandler:^(CKRecord *savedRecord, NSError *saveError) {
// Error handling for failed save to public database
}];
}
}];
使用谓词查询记录
如果您有很多记录并将大文件存储在iCloud中,则不太可能要将所有记录本地存储在设备上。相反,您可以使用查询来获取数据的一部分。查询将记录类型,谓词和排序描述符组合在一起,其中谓词包含已建立索引的字段。您使用[CKQuery](https://developer.apple.com/documentation/cloudkit/ckquery)
对象在代码中构建查询。
例如,此代码片段将提取具有指定标题的所有图稿。
CKDatabase *publicDatabase = [[CKContainer defaultContainer] publicCloudDatabase];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title = %@", @"Santa Cruz Mountains"];
CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Artwork" predicate:predicate];
[publicDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {
if (error) {
// Error handling for failed fetch from public database
}
else {
// Display the fetched records
}
}];
在图库应用程序中,将提取具有指定标题的插图。
回顾
在本章中,您学习了如何:
- 按标识符获取记录
- 提取,修改和保存单个记录
- 使用查询和谓词获取多个记录
技术交流
QQ:3365059189
SwiftUI技术交流QQ群:518696470
相关文章
- [Hadoop]Sqoop 1.4.2中文文档(三)之SqoopJob与其外的操作
- [Hadoop]Sqoop 1.4.2中文文档(二)之数据导出
- thymeleaf模板、thymeleaf语法相关中文文档教程
- [Web 前端] SuperAgent中文使用文档
- web项目中idea控制台中文乱码的解决方法
- android 中文文档
- 【整理】SecureCRT 中文显示乱码问题解决
- hibernate插入中文到mysql数据库乱码
- Android2.2 API 中文文档系列(5) —— View
- Android2.2 API 中文文档系列(3) —— AccessibilityService
- 中文字符集编码Unicode ,gb2312 , cp936 ,GBK,GB18030
- H7-TOOL高速DAPLINK推出离线版SEGGER RTT打印功能,简单易用,支持中文
- 满江红开放技术研究组织发布Seam 2.0中文文档RC版
- 4种方法帮你解决IntelliJ IDEA控制台中文乱码问题
- Socks5协议中文文档
- spark中文文档
- (十)unity4.6学习Ugui中文文档-------參考-UGUI Canvas Components
- 论文投稿指南——中文核心期刊推荐(电工技术)