问题标签 [ckerror]

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 回答
882 浏览

cloudkit - CloudKit 错误:更改令牌已过期,需要重置

斯威夫特 3.1,Xcode 8.3.3

我不断收到来自 CloudKit 的错误,我不知道该怎么办。

我正在跟踪来自 CloudKit 的通知,如下所示:

错误说:

<CKError 0x174241e90:“更改令牌已过期”(21/1016);服务器消息=“错误代码:RESET_NEEDED”;uuid = ...; 容器 ID = "...">

CKServerChangeToken 文档没有提到任何关于重置令牌的内容,CloudKit 仪表板也没有提供任何此类选项。

知道我应该做什么吗?

0 投票
1 回答
606 浏览

ios - CloudKit“订阅重复”错误 - 获取 SubscriptionId

我正在尝试将 a 保存CKQuerySubscription到公共数据库 - aCKError返回带有以下信息:

属性ancestorRecordclientRecord和对象serverRecord都是。CKErrornil

如何从此错误(即C82E82EF-F373-4D75-A465-65364D8FEB12)中获取服务器上存在的查询的 ID。有没有我想念的财产?

0 投票
3 回答
933 浏览

ios - CKError 本地化描述

目标

  • 我想CKError在应用程序中向用户显示遇到的问题作为警报。
  • 所以我想从可以显示给用户的错误中提取字符串。

注意:此问题与要显示的 UI 代码无关。只想从错误中提取有意义的字符串。

我尝试使用本地化描述,但它似乎不包含适当的字符串

代码:

以下是我所做的尝试:

问题:

调试描述似乎最接近我想要的。

  1. 我错过了什么吗?
  2. 提取可以显示给用户的错误字符串的正确方法是什么?
0 投票
1 回答
371 浏览

cloudkit - CloudKit 批处理错误:原子区中的先前错误

我正在尝试CKRecord使用 a保存 a CKModifyRecordsOperation,每次尝试时,都会收到以下初始错误:

["CKErrorDescription": 部分记录修改失败,

"CKPartialErrors": { "CKRecordID: 0x60c000034000; recordName=ABC, zoneID=workspaceZone:DEF" = "CKError 0x60c000257340: \"批处理请求失败\" (22/2024); \"记录 CKRecordID: 0x7fb2f6998a60; recordName=ABC, zoneID=workspaceZone:DEF 将不会被保存,因为之前在 atomic zone 中的错误\""; },

“NSDebugDescription”:CKInternalErrorDomain:1011,“NSUnderlyingError”:CKError 0x60c000248af0:“部分故障”(1011);“修改部分记录失败”;部分错误:{ ... 1 "Batch Request Failed" CKError's omited ... },

“NSLocalizedDescription”:修改部分记录失败]

然后我像这样解析批处理的各个错误:

但所有个别错误说的是:

CKError(_nsError: CKError 0x60c000257340: "Batch Request Failed" (22/2024); "Record CKRecordID: 0x7fb2f6998a60; recordName=GHI, zoneID=workspaceZone:JKL 将不会被保存,因为之前在 atomic zone 中的错误")

CloudKit 服务器日志只是说它是一个BAD_REQUEST,也不是很有帮助。

有没有办法获得更多关于我的记录有什么问题的详细信息?

0 投票
1 回答
392 浏览

ios - Parsing CloudKit Error (CKError)

I'm using CloudKit and I'm checking if a specific zone was already created.

For this example, let's say that a zone isn't set, so CloudKit retrieves me a CKError.

This CKError has a property called partialErrorsByItemID which is of type [AnyHashable : Error]?

Here's the code:

How do I parse this error? I need to access the zoneName ?

0 投票
0 回答
75 浏览

ios - CKError.Code.networkFailure 什么时候会发生?如何解决?

我使用 CKQueryOperation 从 iCloud 获取记录。我发现当我的 iPhone 的网络环境是蜂窝网络时,查询操作 off 失败了

CKError.Code.networkFailure:“可用,但 CFNetwork 给了我们一个错误”。

但我不知道为什么。这会与我的网络运营商有关吗?

0 投票
1 回答
28 浏览

swift - 即使正确设置了所有权限,Cloudkit 也会不断给出创建权限错误

尝试将记录保存到 cloudkit 时出现以下错误

我已经做了一切

  • 为记录类型认证的安全角色具有读取、写入和创建权限
  • 我试过重置开发环境
  • 有趣的是,即使在我将容器与我的应用程序设置解除关联后,该应用程序仍然可以工作
  • 我的查询工作正常 - 只有保存失败

这是我的代码

任何帮助将不胜感激

0 投票
0 回答
35 浏览

xamarin - 处理 Xamarin.ios 中的部分 CloudKit 错误

背景

我正在关注本教程:https ://www.toptal.com/ios/sync-data-across-devices-with-cloudkit

他有一个部分来处理用 swift 编写的来自 CloudKit 的部分错误:

我正在尝试将其转换为 Xamarin 的 C#。但是我正在努力如何处理 CloudKit 错误,因为 Xamarin 似乎缺少 CKError 类。我在静态类中编写了以下内容:

主要问题

我的上述解决方案似乎笨拙,老实说不确定它是否有效。由于下面的编译错误,我无法真正测试。

但真正的问题来了。在他的下一个方法中,他以某种方式访问clientRecord​​ and serverRecord,我认为这是 a 的字段CKError?我什至如何访问这些?我在我不理解的行中插入了一个箭头。当我只能访问 Xamarin 中的 NSError 时,似乎我需要访问 CKError 的一些内部属性。

尝试的解决方案(编译错误,从丢失的数据)

这是我微弱的尝试:

我确信我尝试的解决方案是否走上了正确的轨道。我不知道clientRecordandserverRecord来自哪里!也许我错过了一些我错过的 Swift 的细微差别。我从来没有快速编码过。任何的意见都将会有帮助。

0 投票
1 回答
70 浏览

swift - 使用 NSPersistentCloudKitContainer 时处理 CKErrors

我有一个使用 Core Data 的应用程序,效果很好。我决定尝试使用 iCloud 在多个设备之间同步数据。我遵循将 NSPersistentContainer 更改为 NSPersistenCloudKitContainer 并添加 iCloud 功能、启用 CloudKit 和后台模式(远程通知)的基本步骤。通过这些很少的更改,数据在设备之间进行了应有的同步。看起来很简单。

但是,如果用户的 iCloud 存储空间已满,该应用程序将继续运行并在本地保存,但同步停止(显然)而不通知用户。

我知道这是一个 quotaExceeded 错误,但我将如何访问该错误然后处理它(以及一般处理 CKErrors)?

我觉得这个 NSPersistentCloudKitContainer 是一堵墙,我无法通过它来处理 CKErrors。我是初学者,所以也许我遗漏了一些明显的东西,但在网上找不到任何答案。

坚持 quotaExceeded 错误情况:

  • 第 1 步 - 发生 CKError.Code.quotaExceeded。
  • 第2步 - ???
  • 第 3 步 - 通知用户他们的 iCloud 存储空间已满。

第 2 步是什么样的?

0 投票
0 回答
31 浏览

core-data - CloudKit:使用 NSPersistentCloudKitContainer 时如何处理 CKError partialFailure?

我将 NSPersistentCloudKitContainer 与 Core Data 一起使用,但由于我的 iCloud 空间已满而收到错误消息。打印的错误如下:<CKError 0x280df8e40: "Quota Exceeded" (25/2035); server message = "Quota exceeded"; op = 61846C533467A5DF; uuid = 6A144513-033F-42C2-9E27-693548EF2150; Retry after 342.0 seconds>

我想通知用户这个问题,但我找不到访问错误详细信息的方法。我正在听NSPersistentCloudKitContainer.eventChangedNotification,我收到一个 .partialFailure 类型的错误。但是当我想访问底层错误时,错误的partialErrorsByItemID属性为零。

如何访问此配额超出错误?