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 ...我错过了什么? 的相关文章

  • Xcode 6 Bug:Interface Builder 文件中的未知类

    我升级到 Xcode 6 beta 4 现在我的应用程序不断崩溃并显示以下消息 Interface Builder 文件中存在未知的类 X 它崩溃是因为据说 Xcode 找不到我在故事板中链接的自定义类 但它显示它们在 Xcode 界面中正
  • 在 iPad 上显示 PDF 文档 - 颜色问题

    我为 iPad 构建了一个 PDF 阅读器 在将预览中的文档与模拟器和设备进行并排比较时 我注意到一些颜色问题 最好的形容就是颜色变得更加浓郁 近距离使用的相似颜色之间的任何差异都会变得更加明显 而所有颜色总体上看起来都更亮 尽管大肆宣传将
  • 如何将 NSString 值 @"3.45" 转换为浮点数?

    如何将 NSString 值 3 45 转换为浮点数 3 45 float fCost NSDecimalNumber decimalNumberWithString 3 45 floatValue NSString val 3 45 fl
  • Swift 在调试和发布模式下的行为不同

    不确定这是否是 Swift XCode 或 Alamofire 的问题 但我认识到我的混合 Swift Objc 应用程序中不同地方的奇怪行为 它只发生在用 Swift 编写并使用闭包 网络的部分 这是发生这种情况的示例代码 Alamofi
  • Python for ios解释器[重复]

    这个问题在这里已经有答案了 可能的重复 iOS 上的 Python 或 Ruby 解释器 https stackoverflow com questions 4772591 python or ruby interpreter on ios
  • Objective-C - NSNotificationCenter 放在哪里?

    我有一个 NSNotificationCenter 选择器 把它放在哪里 在委托中 如果是 那么在哪里 在控制器中 方法也放在哪里 我需要解除分配 NSNotificationCenter 吗 NSNotificationCenter de
  • Xcode 9 - 框架断点

    在 Xcode 7 和 8 中 我已经能够通过在也包含框架项目的 xcworkspace 中运行包含应用程序来调试我一直在开发的框架 如果我在框架中设置断点 它们就会在运行时被触发 在 Xcode 9 beta 6 中 情况不再如此 到目前
  • iOS 应用程序启动速度非常慢并且在 ImageLoaderMachO::loadCodeSignature 中停止

    我正在为 iOS 8 3 开发一个基于 Swift 的应用程序 我观察到该应用程序启动非常非常慢 并且似乎在应用程序加载过程中停滞不前 应用程序速度变慢before我的任何代码都会被执行 事实上 只有一个线程处于活动状态 仅使用了 60k
  • 如果两个本地通知具有相同的触发时间并且应用程序位于后台,则 didReceive Local notification 仅被调用一次

    这很容易重现 看起来像是 iOS 的一个错误 如果它是一个功能 那么如何判断第二个通知是否已被接受 更新 这不限于具有相同触发日期的两个或多个通知 它们可以有任何触发日期 但如果它们在应用程序处于后台时都过期 那么它仍然是相同的结果 did
  • 如何向 UITableView 添加项目?

    我正在尝试将项目添加到UITableView有一个按钮 这是我的代码 In viewDidLoad repository NSMutableArray alloc initWithObjects nil ADD ITEM TO LIST r
  • CloudKit 和 Core 在设备之间同步数据

    我创建了一个简单的Notes应用程序基于Core data 现在我想在用户设备之间添加同步 以及我读过的所有文章 this https www raywenderlich com 134694 cloudkit tutorial getti
  • 快速检查网络速度

    我想从我的 swift 应用程序检查网络速度 我发现很多帖子描述了Reachability特别是查找连接是否可达以及是 WIFI 连接还是 WWAN 连接的方法 我的问题 是否可以检测 WWAN 的类型 2G 3G 4G 你可以用以下命令检
  • 停止 ARC 在空闲时释放对象

    我在 Objective C 中遇到内存管理问题 我一直在阅读高级内存管理编程指南 https developer apple com library mac documentation Cocoa Conceptual MemoryMgm
  • 当前图像选择模式会擦除 UI

    我下面有一个非常简单的视图控制器 UI 实际上只是一个带有底部标签栏的按钮 import UIKit class ImageAdderViewController UIViewController override func viewDid
  • 如何在 SwiftUI 中将变量从一个视图传递到另一个视图

    我正在尝试将一个变量从一个视图传递到 SwiftUI 中的另一个视图 我有一个重置按钮 我想在另一个视图中将变量设置为零 我尝试在视图一中创建一个新结构并在视图2中访问该变量 View 1 State var count MyNumber
  • 如何检测按下的返回键并使用 UIKeyInput 协议对其进行响应?

    我有一个表视图 显示我希望用户能够编辑的列表 为了节省空间 并且让我的视图更容易看清 我创建了一个符合 UIKeyInput 协议的自定义工具栏 这样我就可以拉起键盘而无需使用任何文本字段 到目前为止 一切都很好 我有一个可变字符串正在处理
  • Xcode 9.2 的正确应用程序图标 (appicon) 命名约定是什么?

    我从以下网站下载了一组 23 个 iOS 应用程序图标https makeappicon com https makeappicon com具有以下文件名 email protected cdn cgi l email protection
  • 渐变方向从左到右

    我完全被这个问题难住了 它应该如此简单 以至于让我发疯 我正在使用这个苹果反射教程 苹果反射示例 http developer apple com library ios samplecode Reflection Listings MyV
  • SwiftUI:如何让项目的拖放重新排序起作用?

    我有以下 SwiftUI 视图 struct ContentView View State var model Model var body some View ScrollView LazyVGrid columns columns sp
  • 将 .p12 证书存储在钥匙串中以供稍后使用

    我正在尝试按照 Apple 文档处理此处的客户端 p12 证书 https developer apple com library ios documentation Security Conceptual CertKeyTrustProg

随机推荐

  • 如何为 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