问题标签 [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 投票
0 回答
146 浏览

ios - CKQueryOperation 随机出现错误“请求中不存在任何操作”

我正在尝试使用下面的代码片段从云服务器获取一些记录。它在大多数情况下返回没有任何错误的记录:

但有时,它会返回错误:

{
NSDebugDescription = "CKInternalErrorDomain: 1009";
NSLocalizedDescription = "请求中没有操作";
NSUnderlyingError = "错误域=CKInternalErrorDomain Code=1009 \"请求中没有操作\" UserInfo={NSLocalizedDescription=请求中没有操作}";
}

我检查了错误代码,它是CKErrorInvalidArguments,正如文档所说

错误的客户端请求(错误的记录图、格式错误的谓词)

我不知道这个错误是怎么来的以及如何处理这个错误,与错误不同,它对我在一段时间后发送请求CKErrorNetworkUnavailable没有CKErrorRetryAfterKey价值。error.userInfo


顺便说一句,当我收到这个错误时,我的所有操作都会有这个错误,没有返回任何记录。

0 投票
1 回答
1005 浏览

ios - 将记录 CKRecordID 保存到服务器时出错:将记录从类型“X”更新为“Y”的尝试无效

当我使用CKModifyRecordsOperation将多个表的记录保存到私有云数据库的默认区域时,它总是返回以下错误,但表“X”除外:

将记录保存到服务器时出错:将记录从“X”类型更新为“Y”的尝试无效

error.userInfo细节:

{
CKErrorDescription = "将记录 CKRecordID: 0x7fd7a3d4c0c0; 1:(_defaultZone: defaultOwner ) 保存到服务器时出错:将记录从'X'类型更新为'Y'的尝试无效";
ContainerID = "iCloud.com...";
NSDebugDescription = "CKInternalErrorDomain: 2006";
NSLocalizedDescription = "将记录保存到服务器时出错:将记录从'X'类型更新为'Y'的尝试无效";
NSUnderlyingError = "CKError 0x7fa0d250c4e0: \"Invalid Arguments\" (2006); 服务器消息 = \"从类型 'X' 到 'Y' 更新记录的尝试无效\"; uuid = E2E...D1E; 容器 ID = \ "iCloud.com...\"";
RequestUUID = "E2E...

错误键 = ck1rosofi;
}

相关代码片段:

0 投票
2 回答
2585 浏览

swift - Swift / CloudKit:记录更改后,上传触发“服务记录已更改”

我正在尝试将 CKReference 添加到云工具包中的记录,但尝试不断触发“服务记录已更改”。从我的 println 显示的控制台消息(控制台消息和下面的代码)中,我正在上传带有 0 个引用的记录,然后当我附加引用时,我看到尝试上传带有 1 个引用的记录。然后我得到了错误。

据我了解,不应触发“服务记录已更改”,因为参考列表中的值已更改(记录有一个完整的额外字段)。即使我处于开发模式,我也手动为引用列表创建了键值字段,因为当引用列表为空时,第一条记录上传不包含该字段(上传空数组会导致另一个错误)。

我将在控制台消息之后按相关顺序包含代码(您将能够看到大部分 println)。整个项目都在 github 上,如果需要,我可以链接到它或包含更多代码。

相关控制台:

来自 CrewParticipant 的代码:

发生上传的通用代码(适用于其他几个类):

0 投票
1 回答
191 浏览

swift - 更新到 Xcode 8 beta 6 后,从关联的枚举中丢失了 CKErrorCode 和 .rawValue

我在 Xcode 7.3 中有一个 switch 语句(error: NSError作为参数传递后),它的工作方式如下:

在 Xcode 8 beta 6 中迁移到 Swift 3.0 后,我开始收到错误消息,提示无法识别 CKErrorCode。我仍在导入云,并且迁移将我的枚举小写,我尝试像这样更改它:

但这似乎也是错误的(测试版在我的系统上似乎有问题,所以错误不断消失和重新出现,所以当我现在编码时很难说它可能只是我的系统,但在我编译时它们仍然存在)。我一直在扫描https://swift.org/migration-guide/#known-migration-issueshttps://swift.org/migration-guide/但还没有找到任何东西,当我用谷歌搜索 CKErrorCode 文档时(我假设它忽略了 Swift 3,因为它处于测试阶段)似乎说我以前的语法是 kosher。

谁能指出我正确的方向?枚举丢失了.rawValue吗?枚举似乎已经改变,但我很难找到关于我应该做什么的文档。是否有可以识别这些枚举案例的 CKErrorCode 替代方法?请不要告诉我云套件错误处理的变化比这大得多:) 提前致谢。

0 投票
2 回答
296 浏览

ios - CloudKit 无法从公共容器中获取数据。错误 1/4000

我最近部署了一个支持 CloudKit 的应用程序更新。它一直运行良好,突然间我开始收到此错误:

Internal Error" (4000); "Couldn't get a signing certificate"

而且我的应用程序无法从 CloudKit 获取信息。

我的配置文件没问题。我更改了 Apple ID 以进行检查,但没有一个有效。我更换了 iPhone,但仍然没有运气。

开发环境可以在模拟器上运行,但不能在 iPhone 上运行。显然生产环境不能从模拟器中获取。

最有趣的部分是,如果我将 iPhone 连接到 Mac,然后转到 Xcode -> 设备,打开从 App Store 下载的应用程序,并读取设备日志,当我尝试获取记录时,它会记录:

Sep 5 15:26:23 Rogers-6 cloudd[7493] <Error>: We didn't get a Mescal cert back from the server Sep 5 15:26:23 Rogers-6 cloudd[7493] <Error>: Couldn't renew Mescal session. Failing this request: <CKError 0x12eee3680: "Internal Error" (4000); "Couldn't get a signing certificate">

我用引号在 Google 中搜索了那个 Mescal 错误,结果为零。

关于这个问题只有一个 Stack Overflow 问题:

  1. CloudKit:“内部错误”(1/4000);“无法获得签名证书”> 这没有帮助。

最后但最重要的是,它适用于某些用户 afaik。我的一个朋友安装了我的应用程序,它可以毫无问题地获取数据。

有什么线索吗?

提前致谢。

PS:如果有人想测试一下它是否适合你,我的应用在 App Store 上名为 Sueca Drinking Game。

0 投票
1 回答
510 浏览

ios - 使用 CKPartialErrorsByItemIDKey 恢复错误

得到后.partialFailure CKError,我一直在尝试恢复 id 和相应的错误,但我遇到了问题......

现在我正在使用:

我还尝试了以下方法:

和:

第一个打印显示在控制台中(我将打开的标签向左切换,这样它们就不会被解释为 html):

正如我从文档中了解到的那样,我应该从字典中得到一个NSDictionary<CKRecordID, (CK)Error>返回,并从方法中得到一个。根据第一次打印,该方法在这种情况下不起作用,但关键是给了我一个 CKRecordID 和 CKError 的字典。我不明白为什么没有达到第二个打印?userInfoCKPartialErrorsByItemIDKeyNSDictionary<NSObject, Error>partialErrorsByItemID

0 投票
0 回答
423 浏览

swift - CKModifyRecordsOperation 错误重试逻辑

我是 CloudKit 的新手,并且已经弄清楚了一次CKModifyRecordsOperation添加/删除/删除一个的基本案例CKRecord。我想用它来传递多个recordsToSaveand recordIDsToDeleteerror.userInfo[CKErrorRetryAfterKey]我知道当有值时我需要重试。我的问题是,如何重试此操作?我一直在弄清楚如何知道要重试哪些记录。我必须重试所有记录吗?我可以在哪个完成块中重试,还是两者兼而有之?

我的代码在下面带有我不明白如何重试的注释。

0 投票
3 回答
278 浏览

swift - 服务器记录中的 CKAsset 不包含 fileURL,甚至无法检查 nil

当我使用保存策略保存包含CKAsset(只是 JPG 图像)的记录时,我正在测试同步冲突 我收到错误消息。这将为我返回解决冲突的有用信息,包括我尝试保存的信息以及记录的当前服务器版本。第一个在,第二个在。CKModifyRecordsOperation.IfServerRecordUnchangedCKErrorCode.ServerRecordChangedCKErrorCKRecorderror.userInfo[CKRecordChangedErrorClientRecordKey]error.userInfo[CKRecordChangedErrorServerRecordKey]

我的问题是我正在尝试使用以下代码访问服务器记录的 CKAsset:

我不明白这怎么可能。但经过进一步调查,我打印出客户端和服务器 CKRecords,而服务器缺少“路径”属性。

客户端 CKAsset...myPhoto (修改) -> CKAsset: 0x7b960d90; path=~/tmp/BF185B2C-7A39-4730-9530-9797E843243Aphoto, size=373959, uploadRank=0, uploadReceipt=A92Eg1qoyPG7yrg3, UUID=3C2D5DC8-4FF5-4A81-853B-395FC1C59862, referenceSignature=<012fd149 200fc600 617e3907 88763e3e 5002abbf 5b> , flags=uploaded, WrappedEncryptionKey=, signature=<0134a297 38d52f5f 9275bfba fce5b1a8 3d6b9692 d3>

服务器 CKAsset...myPhoto = CKAsset: 0x7be700d0; referenceSignature=<015337bd 84409893 7c014f46 36248d27 ce911dc3 7a>, size=373959, uploadRank=0, UUID=DF5D2EB4-033C-49A2-AF52-6055B5A44106, wrappedEncryptionKey=<767e7cfd d1e62110 32119ee9 f6f026b3 5bcf0cc3 8053a4de>, signature=<0134a297 38d52f5f 9275bfba fce5b1a8 3d6b9692 d3>

请注意服务器一号是如何path=~/tmp/C706423B-A3E8-4051-A9B3-483C718BFBF5photo丢失的?谁能解释一下?为了解决这个问题,我尽量避免接触服务器记录中的 CKAsset。我希望至少能够检查零。我想把它放在那里,以防它帮助其他人。

0 投票
1 回答
243 浏览

ios - CloudKit - partialFailure 和 limitExceeded

概括

CloudKit想知道所有可能CKError.Code的情况.partialFailure

目前我只为部分失败处理以下CKError.Code内容。

假设:

  1. .serverRecordChanged //仅在保存记录时适用
  2. .zoneNotFound//仅在获取区域时适用
  3. .unknownItem //仅在获取项目时适用
  4. .batchRequestFailed//仅在自定义区域保存记录时适用

问题:

  1. 对于partialFailure,上述是唯一可能的错误代码吗?

  2. 错误是否仅可能是错误 serverRecordChanged的一部分?(完成处理程序返回的错误是否不会直接包含 , ,而只有 错误可能包含它们?)zoneNotFoundunknownItempartialFailureserverRecordChangedzoneNotFoundunknownItempartialFailure

  3. 我对上述每个错误何时正确的评论是否正确?(仅适用于...)

  4. 是为操作和操作limitExceeded抛出错误还是仅适用于操作?CKFetchCKModifyCKModify

0 投票
1 回答
230 浏览

ios - IOS:没有互联网连接时未调用 fetchRecordZoneChangesCompletionBlock

我在我的应用程序中使用 CloudKit。要从 iCloud 中检索所有更改,我使用操作 CKFetchRecordZoneChangesOperation。当我在没有活动 Internet 连接的情况下添加此操作时,永远不会调用 fetchRecordZoneChangesCompletionBlock。

我确实希望调用此完成块时出现错误 CKError.networkUnavailable。

我正在使用 swift 3。

我可能误解了一些事情。有人可以解释我错过了什么吗?