返回介绍

获取记录

发布于 2024-10-06 10:40:36 字数 6094 浏览 0 评论 0 收藏 0

将记录保存到数据库后,可以使用不同的机制检索它们。按记录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对象在代码中构建查询。

例如,此代码片段将获取具有指定标题的所有图稿。

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
    }
}];

在Gallery应用程序中,将获取具有指定标题的图稿。

../Art/5\_fetching\_by\_attribute\_2x.png

概括

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

  • 按标识符获取记录
  • 获取,修改和保存单个记录
  • 使用查询和谓词获取多个记录

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文