问题标签 [ckoperation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
183 浏览

nsoperation - CloudKit:当应用程序暂停时,CKOperations 不运行

我正在收听来自 CloudKit 公共数据库的 CKSubscriptions 的远程通知。我想处理在应用程序暂停时收到通知的情况......我通过使用带有“等待启动可执行文件”选项的 Xcode 运行应用程序在我的设备上模拟这种情况。我注意到application:didReceiveRemoteNotification:fetchCompletionHandler委托方法被正确调用,并且在此之后我排队了一个CKFetchNotificationChangesOperation操作,但该操作从未运行。我没有得到任何notificationChangedBlockorfetchNotificationChangesCompletionBlock回调。如果应用程序在前台运行并且收到通知,则同样可以正常工作。

我尝试将 CKOperation 和操作队列上的 QoS 设置为,NSQualityOfServiceUserInteractive但这似乎也无济于事。

我也在 WiFi 上尝试这个,iPhone 以 100% 的电量插入我的电脑。

我还需要研究什么才能让 CKOOperations 在后台运行吗?

0 投票
0 回答
258 浏览

ios - CloudKit 使用电子邮件发现用户

我正在使用CKOperation以下内容通过他们的电子邮件查找用户记录。每次我运行代码时,它总是将用户的发现返回为零。我知道电子邮件地址是正确的。你知道我哪里可能出错或者 CloudKit 是否有错误?

谢谢

我还在以下内容中添加了这个viewDidLoad

0 投票
0 回答
34 浏览

ckcontainer - return no longLived CKOperation

  1. 我创建了一个 CKOperation,其 longLived 设置为“true”。
  2. 打开我的 iPhone 的飞行模式(iOS 9.3.5)
  3. 杀死应用程序
  4. 重新启动,发现没有 longLived 操作

    /li>
0 投票
0 回答
452 浏览

swift - CloudKit CK操作队列

我必须 CKOperations 并想在第一次操作完成后开始第二次操作。我如何“告诉”第二次手术等到第二次手术完成?

这是我的第一个操作(创建自定义区域):

这是我的第二次操作(存储记录):

0 投票
3 回答
14554 浏览

core-data - 如何高效地在 Core Data 和 CloudKit 之间同步记录

我目前正在学习如何使用 CloudKit 框架,但缺乏说明如何同步 Core Data 和 CloudKit 的文档或示例。

我看过所有专门用于 CloudKit 的 WWDC 视频(2014、2015、2016),但没有一个视频告诉我们如何实现与 Core Data 的同步。我找不到任何新的示例、教程或书籍来展示如何实现这种同步。

我知道使用 CloudKit 的操作 API(不是便利 API)并订阅更改是有效的,正如它在新的 WWDC 2016 视频中所说的那样,专用于 CloudKit,但与 CoreData 的映射是一个真正的问题。

例如,假设我想创建一个类似于 Notes 应用程序的应用程序。离线时,用户可以创建他的笔记并使用它们将它们保存到他的核心数据库中。当设备上线时,应用程序会检查服务器上发生的变化并将新创建的记录保存到服务器(CloudKit)。

当应用程序启动时,它还会从 CloudKit 获取更改,如果有更改,它会使用新的更改更新本地缓存(核心数据)。

我希望有一个共同的同步模式。在哪里放置与 Core Data 方法同步的地方以及它们应该是什么样子?

将不胜感激有关此的任何信息或帮助。

我正在使用 Swift 3、Xcode 8、iOS 10。

0 投票
1 回答
367 浏览

ios - 优化 CKFetchRecordZoneChangesOperation 以获取所需键

在我的 CloudKit 应用程序中,我在存储所有 CKRecords 的私有数据库中创建了一个区域。CKRecords 可以是 10 种不同的记录类型,其中一些可以附加 CKAsset。我CKFetchRecordZoneChangesOperation用来查找该区域的记录更改,并下载它们。我想优化,CKFetchRecordZoneChangesOperation以便我只包含desiredKeys在下载中,所以我当时不下载 CKAsset,但似乎没有任何方法可以为每个记录类型指定这个。相反,您似乎只能指定desiredKeysCKFetchRecordZoneChangesOptionszoneID 上设置的 on 。

CKFetchRecordZoneChangesOperation那么,考虑到该区域中有不同类型的记录类型,我如何在我的提取中指定“desiredKeys” ?我在这里错过了一些简单的东西吗?我猜的另一个(极端)选项是为每种记录类型创建一个记录区域,但如果有可能的话,我不想走这条路。

谢谢。

0 投票
1 回答
243 浏览

ios - CloudKit CKdatabaseOperation 不会在模拟器中抛出错误,具体取决于 .qualityOfService 设置

我基本上是在搞乱 CloudKit。我有 2 个问题需要帮助/教育。

(1) 当我尝试在关闭 WiFi 的模拟器中运行以下代码(模拟网络不可用)时,我希望它会抛出网络不可用错误。但是,cloudKit 不会抛出任何错误,该函数也不会执行任何操作,即不会执行 modifyRecordZonesCompletionBlock 内的任何一个打印语句

但是,当我将 to 更改createZoneOperation.qualityOfServicedefaultoruserInitiated时,它会抛出一个错误(如下),这是预期的行为。为什么是这样?它只是模拟器异常还是抛出云套件错误与服务的操作质量有关,为什么?我在 cloudkit API 参考中找不到有关此行为的任何信息。

(2) 另外,我希望它会抛出一个直接Network Unavailable错误,而不是一个Partial Failure包含错误的失败错误Network Unavailable。这是预期的行为吗?它是否总是抛出Partial Failure错误,然后必须打开包装才能找到包含的错误消息?文档似乎非常缺乏任何解释,除非我没有找到正确的位置。

任何帮助将不胜感激。谢谢你。

0 投票
0 回答
107 浏览

timeout - 为什么 CloudKit CKOperations 会超时?

我现在正在使用CKQueryOperation和CKModifyRecordsOperation来处理我在cloudKit中的记录。我发现无论我使用蜂窝还是wifi,有时都很好,但有时操作会出现超时,CKError.Code = 4。这是我的代码:

任何帮助,将不胜感激。

0 投票
1 回答
88 浏览

swift - 如何为不同的 CKDatabase 排队 CKOperations

我创建了 2 个操作,比如说 CKModifySubscriptionsOperation。一个用于私有数据库,另一个用于共享数据库。我可以通过添加到 OperationQueue 来将它们排队,每个下一个都将在上一个完成块之后开始。

但我需要从不同的数据库中执行一些操作(获取、修改等),但仍需要将它们排队。这是我向数据库添加操作的方法。如何将它们放入单个队列但仍让它们分别进入所需的数据库?