CKFetchRecordsOperation + CKQueryOperations ...我错过了什么?

2024-04-05

经过大量搜索示例代码后,设法拼凑出 CKFetchRecordsOperation;就在这里……但我一定错过了什么。别误会我的意思,它确实是一种享受……但是……

要执行 CKFetchRecordsOperation,您需要一个 CKRecordID 的 NSArray;要获取 CKRecordID 的 NSArray,您需要执行 CKQuery,通过它可以构建 CKRecordID 的 NSArray。

但是等一下,提取 CKRecordID 的过程使用了 CKQuery,通过它我可以简单地下载 CKRecords 吗?

如果不使用 CKQuery,如何获取 CKRecordID 的 NSArray?

-(void)doSingleBeaconsDownload
{
    CKDatabase *publicDatabase = [[CKContainer containerWithIdentifier:@"iCloud.cqd.ch.BeaconBrowser"] publicCloudDatabase];
    NSPredicate *predicatex = [NSPredicate predicateWithFormat:@"iBeaconConfig = %@",iBeaconsConfirmed.giReferenceID];
    CKQuery *query = [[CKQuery alloc] initWithRecordType:@"Running" predicate:predicatex];

    [self.delegate performSelectorOnMainThread:@selector(processCompleted:) withObject:@"Downloading Configuration ..." waitUntilDone:YES];

    [publicDatabase performQuery:query inZoneWithID:nil completionHandler:^(NSArray *results, NSError *error) {

        if (error) {
            NSLog(@"Batch Download Error iCloud error %@",error);
        }
        else {
            NSMutableArray *rex2download = [[NSMutableArray alloc] init];
            for (CKRecord *rex in results) {
                [rex2download addObject:rex.recordID];
            }

            CKFetchRecordsOperation *fetchRecordsOperation = [[CKFetchRecordsOperation alloc] initWithRecordIDs:rex2download];

           /* fetchRecordsOperation.perRecordCompletionBlock = ^(CKRecord *record, CKRecordID *recordID, NSError *error) {
                if (error) {
                    // Retain the record IDs for failed fetches
                }
                else {
                   // Do something with each record downloaded
                }
            };*/

            fetchRecordsOperation.perRecordProgressBlock = ^(CKRecordID *record, double recordsDownloaded) {
                if (error) {
                    // damn ...
                } else {
                    NSLog(@"Downloaded %f", recordsDownloaded);
                }
            };
            fetchRecordsOperation.fetchRecordsCompletionBlock = ^(NSDictionary *recordsByRecordID, NSError *error) {
                if (error) {
                    // Failed to fetch all or some of the records
                }
                else {
                    for(CKRecord *record in results) {
                        NSLog(@"Fini download %lu",(unsigned long)[recordsByRecordID count]);
                    }
                    [self.delegate performSelectorOnMainThread:@selector(beaconsDownloaded:) withObject:noOf waitUntilDone:YES];
                }
            };
            [publicDatabase addOperation:fetchRecordsOperation];
        }
    }];
}

来自苹果文档 https://developer.apple.com/library/prerelease/ios/documentation/CloudKit/Reference/CloudKit_Framework_Reference/index.html#//apple_ref/doc/uid/TP40014064:CKFetchRecordsOperation 对象从 iCloud 检索 CKRecord 对象(您已经知道其 ID)。

CKQueryOperation 用于根据某些查询从 iCloud 检索 CKRecords,因此即使您不知道它们的 recordID,也可以获取它们。仅当您拥有 CKRecordID 时才使用 CKFetchRecordsOperation。您可以在不访问 iCloud 的情况下创建 CKRecordID,并且可以将它们存储在您拥有的任何本地存储中。

我用于此类操作的一个很好的用例是,当您想要修改 CKRecord 时,您需要首先从 iCloud 检索它(使用 CKFetchRecordsOperation),然后使用 CKModifyRecordsOperation 将其保存回来。

看看 CloudKit 上的两个 WWDC 2014 视频,它们很好地解释了这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CKFetchRecordsOperation + CKQueryOperations ...我错过了什么? 的相关文章

  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • Xcode 8 / Swift 3:“UIViewController 类型的表达式?未使用”警告

    我有以下函数 它之前编译得很干净 但在 Xcode 8 中生成警告 func exitViewController navigationController popViewController animated true UIViewCon
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我
  • 当 isUserInteractionEnabled false 时,SKSpriteNode 不会让触摸通过

    我正在尝试在 SpriteKit 中创建一个覆盖层 方法是使用SKSpriteNode 但是 我希望触摸穿过覆盖层 所以我设置isUserInteractionEnabled为假 然而 当我这样做时 SKSpriteNode似乎仍然吸收所有
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 如何使用 CNContacts 快速获取手机号码?

    我有一些代码可以检索用户联系人中的所有电话号码 但只想过滤掉手机号码 目前 我只是通过将第一个数字为 或第二个数字为 7 的数字添加到数组中来实现此目的 如下所示 func findContacts gt CNContact let key
  • 错误消息:您输入的捆绑包 ID 已被使用

    我正在尝试发布一个 iPhone 应用程序 这不是第一个 我过去已经发表过其他的 因此 我在第一个和第二个表单中输入了所需的信息 然后填写了第三个大表单 您还可以在其中上传图标和屏幕截图 好吧 我在上传屏幕截图之前按下了 保存 按钮 因为我
  • 在 iOS 7 中 viewForHeaderInSection 部分是从 1 开始而不是从 0 开始

    我正在处理UITableView在我的项目中 这个项目是在 Xcode 4 5 中创建的 现在我正在使用 Xcode 5 所以我的问题是何时在 iOS 6 中运行我的项目 viewForHeaderInSection方法部分从 0 开始没问
  • 使用数组中的字符串淡入/淡出标签

    func setOverlayTitle self overlayLogo text Welcome var hello String Bon Jour GUTEN nMORGEN BONJOUR HOLA BUENOS D AS BUON
  • 在 WKWebView 中禁用缩放?

    有谁知道在 WKWebView 中禁用双击和捏缩放的简单方法 我尝试过的任何方法都不起作用 Webview scrollView allowsMagnification false Error value of type WKWebView
  • AVAudioPlayer 无法从网站播放 m4a 或 mp3 文件类型

    我试图在我的应用程序中找到一个仅纯 m4a 声音的 URL 我有音频的 URL 理论上可以下载它 然后 使用下载的文件URL到声音 我尝试使用AVAudioPlayer播放它 但它不播放任何声音 这是我的代码 在 URL 检索函数中 我调用
  • 在 iOS 上使用 RNCryptor 异步解密大文件

    我需要在 iOS 上使用 RNCryptor 异步解密一个大文件 以便显示进度条 我在任何地方都找不到示例 因此尝试了我猜对的方法 但是 我想出的方法不起作用 解密器的处理程序从未被调用 并且线程在发送所有数据后因 EXC BAD ADDR
  • 使用 UITabBarController 时覆盖整个屏幕的视图?

    我想在 UITabBarController 设置中在整个屏幕上覆盖 HUD 样式的透明图形 执行此操作的按钮位于第一个选项卡的屏幕 FirstViewController 中 并且覆盖层也应该覆盖选项卡 这可能吗 您可以将新视图直接附加到
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • 从现有坐标地图套件中查找最近的位置

    我正在为拥有多家商店的客户开发 iPhone 应用程序 目标 C 我有数组中所有商店 20 的坐标 纬度 长 目前我正在考虑循环遍历商店坐标数组并获取从用户当前位置到商店位置的距离 然后将它们添加到数组中并按最小距离进行排序 这是正确的方法
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • Glib 在 iPhone 应用程序中的使用

    我想基于现有的开源 Objective C 框架开发一个 iPhone 应用程序 但是该框架广泛使用了 glib 库 我找不到一种方法来构建和包含 iPhone 应用程序的 glib 库 非越狱 有什么办法可以做到这一点 或者有没有推荐的方
  • Fitbit oauth2 公共 API 停止工作。给出错误 - 抱歉,这不是你..是我们

    几个月前 我准备了一个关于 Fitbit oauth2 公共 API 的演示 其中我使用特定用户登录并获取他的活动 一切正常 但最近 我打开演示并尝试使用同一用户登录 但它没有登录并反复出现此错误 我尝试更改在 Fitbit 上注册的演示应
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 如何为 MVC .Net Core 应用程序创建单个管理员用户

    我正在构建一个本质上是商店的网络应用程序 但我想为网站管理员提供一种简单的方法来添加新产品 但是我想限制网站的这一部分 以便只有管理员可以访问它 目前我对其他用户没有用处 我该如何做到这一点 以便任何拥有管理员用户名和密码的人都可以访问这些
  • ssl:身份验证方法 ssl 需要密码

    在尝试通过 Ansible 连接到 Windows 虚拟机时 我遇到了以下问题 TASK setup lt 10 xx xx xx gt ESTABLISH WINRM CONNECTION FOR USER winad admin on
  • 控制器文件已加载,但类不存在

    我在 Magento 中遇到此错误时遇到问题 控制器文件已加载 但类不存在 完整堆栈位于底部 我本质上是想遵循本教程 在 Magento 中创建新模块 HelloWorld http magento4u wordpress com 2009
  • 使用 DllImport 在 C# 中调用 OpenGL 函数?

    我目前正在为 OpenGL 开发一个 C 实用程序库 对于跨平台窗口管理 我使用 GLFW 并使用 DllImport 成功加载了 glfwCreateWindow 或 glfwMakeContextCurrent 等函数 现在我想使用 O
  • CentOS 和 Ubuntu 上的“常规文件”是什么?

    我的环境是 CentOS 6 9 Ubuntu 16 04 LTS GNU coreutils 8 4 有 test 命令来检查文件 f option man test shows f FILE FILE exists and is a r
  • 二叉树的 Herbrand 宇宙、Herbrand 基础和 Herbrand 模型(序言)

    什么是二叉树的 Herbrand 宇宙 Herbrand Base 和 Herbrand Model binary tree empty binary tree tree Left Element Right binary tree Lef
  • 你能在 Mongo 中为 $addToSet 指定一个键吗?

    我有一个文件 profile set name nick options 0 name joe options 2 name burt options 1 并想添加一个新文档到profile set如果名称尚不存在则设置 无论选项如何 所以
  • SubmissionPublisher 提交时不调用订阅者的 onNext

    每个时间间隔我都会通过特定的查询检索推文 这些推文必须传递给计算和操作这些推文的服务 所以这些服务都是向我的发布者订阅的 所以publisher hasSubscribers 返回true 但是提交或提供函数不会调用我的订阅者的 onNex
  • 快速清除 JSON 缓存?

    我正在处理一些经常更新的 API 数据 我最近发现 当数据在服务器上更新时 数据在手机上无法正确更新 经过几个小时的尝试解决此问题后 我终于尝试从手机中删除该应用程序 然后重新安装 它成功了 经过进一步测试 我发现它打印出旧的 JSON 一
  • 将参数传递给 h:outputtext 标记中的方法

    我想通过将属性传递给在支持 bean 中实现的方法来在 jsf 屏幕中显示文本 我必须将动态值作为属性传递 我尝试了下面的内容 但它似乎是一个不正确的语法
  • PHP 中的函数超时

    有没有办法让函数超时 我有 10 分钟的时间来完成一项工作 该作业包含一个 for 循环 下面是一个示例 arr 有 15 个元素 some function 有时可能需要 1 分钟以上 事实上 有一次它被挂了5分钟 有没有办法让函数调用超
  • DataFrame 按元素除以就地行总和

    我希望每个元素除以行的总和 下面的代码总是出错 熊猫新手 谢谢 df pd DataFrame np random rand 12 reshape 3 4 columns list abcd df row sum df apply lamb
  • 如何在React Native中重置Firebase身份验证密码

    我想知道如何在我的react native项目中重置firebase电子邮件身份验证密码的密码 我想发送一封电子邮件来重置密码 如何使用以下方法做到这一点 firebase auth sendPasswordResetEmail forgo
  • 从php访问json数据

    我在访问 JSON 数据时遇到问题 我对 JSON 和 jquery 很陌生 所以可能有一个简单的解决方案 我很高兴找到答案 我的 jQuery post currentPage php currentPage 1 function dat
  • 如何将第 3 方库添加到 Android AOSP 构建中?

    我正在尝试将 Jackson JSON 库添加到我的 AOSP 项目中 我可以编译我的项目并将其刷新到手机 但出现运行时错误 E JavaBinder 1689 java lang NoClassDefFoundError Failed r
  • 如何查看 ASP.Net MVC 中调用的每个控制器和操作方法?

    我一直致力于其他人用 ASP Net MVC 开发的许多项目 很多时候 我想在调试某些内容时查看页面加载期间调用了哪些控制器和操作 通常我会在控制器中设置一个断点 然后从那里转到视图以查看它是否包含任何 RenderAction Rende
  • fluidvalidation 更改 int/long 的默认错误消息

    有没有办法更改 FluentValidation 中的默认错误消息 我们能够为更复杂的类型设置验证 但简单的 您输入的数据不是整数 样式的东西我们似乎无法理解 这些的内置错误是 值 x 对 y 无效 或类似的内容 有没有办法覆盖这些 没有简
  • 使用 Internet Explorer 与 Chrome 和 Firefox 进行跨域 HTTP

    我正在我的 Web 应用程序和服务器之间发出 CORS 请求 该请求是一个简单的授权请求 请求发送后 服务器设置一个 JSESSIONID cookie 弹出一个对话框 输入您的用户名和密码 然后按提交 一旦凭据正确 httpRequest
  • 推荐的在线片段管理器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个在线片段管理器 用于工作 个人使用和灵感 我的主要需求是谷歌 脸书登录 各种编程语言的字体
  • CKFetchRecordsOperation + CKQueryOperations ...我错过了什么?

    经过大量搜索示例代码后 设法拼凑出 CKFetchRecordsOperation 就在这里 但我一定错过了什么 别误会我的意思 它确实是一种享受 但是 要执行 CKFetchRecordsOperation 您需要一个 CKRecordI