问题标签 [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.
ios - CKQueryOperation 随机出现错误“请求中不存在任何操作”
我正在尝试使用下面的代码片段从云服务器获取一些记录。它在大多数情况下返回没有任何错误的记录:
但有时,它会返回错误:
{
NSDebugDescription = "CKInternalErrorDomain: 1009";
NSLocalizedDescription = "请求中没有操作";
NSUnderlyingError = "错误域=CKInternalErrorDomain Code=1009 \"请求中没有操作\" UserInfo={NSLocalizedDescription=请求中没有操作}";
}
我检查了错误代码,它是CKErrorInvalidArguments
,正如文档所说
错误的客户端请求(错误的记录图、格式错误的谓词)
我不知道这个错误是怎么来的以及如何处理这个错误,与错误不同,它对我在一段时间后发送请求CKErrorNetworkUnavailable
没有CKErrorRetryAfterKey
价值。error.userInfo
顺便说一句,当我收到这个错误时,我的所有操作都会有这个错误,没有返回任何记录。
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;
}
相关代码片段:
swift - Swift / CloudKit:记录更改后,上传触发“服务记录已更改”
我正在尝试将 CKReference 添加到云工具包中的记录,但尝试不断触发“服务记录已更改”。从我的 println 显示的控制台消息(控制台消息和下面的代码)中,我正在上传带有 0 个引用的记录,然后当我附加引用时,我看到尝试上传带有 1 个引用的记录。然后我得到了错误。
据我了解,不应触发“服务记录已更改”,因为参考列表中的值已更改(记录有一个完整的额外字段)。即使我处于开发模式,我也手动为引用列表创建了键值字段,因为当引用列表为空时,第一条记录上传不包含该字段(上传空数组会导致另一个错误)。
我将在控制台消息之后按相关顺序包含代码(您将能够看到大部分 println)。整个项目都在 github 上,如果需要,我可以链接到它或包含更多代码。
相关控制台:
来自 CrewParticipant 的代码:
发生上传的通用代码(适用于其他几个类):
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-issues和https://swift.org/migration-guide/但还没有找到任何东西,当我用谷歌搜索 CKErrorCode 文档时(我假设它忽略了 Swift 3,因为它处于测试阶段)似乎说我以前的语法是 kosher。
谁能指出我正确的方向?枚举丢失了.rawValue
吗?枚举似乎已经改变,但我很难找到关于我应该做什么的文档。是否有可以识别这些枚举案例的 CKErrorCode 替代方法?请不要告诉我云套件错误处理的变化比这大得多:) 提前致谢。
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 问题:
最后但最重要的是,它适用于某些用户 afaik。我的一个朋友安装了我的应用程序,它可以毫无问题地获取数据。
有什么线索吗?
提前致谢。
PS:如果有人想测试一下它是否适合你,我的应用在 App Store 上名为 Sueca Drinking Game。
ios - 使用 CKPartialErrorsByItemIDKey 恢复错误
得到后.partialFailure
CKError
,我一直在尝试恢复 id 和相应的错误,但我遇到了问题......
现在我正在使用:
我还尝试了以下方法:
和:
第一个打印显示在控制台中(我将打开的标签向左切换,这样它们就不会被解释为 html):
正如我从文档中了解到的那样,我应该从字典中得到一个NSDictionary<CKRecordID, (CK)Error>
返回,并从方法中得到一个。根据第一次打印,该方法在这种情况下不起作用,但关键是给了我一个 CKRecordID 和 CKError 的字典。我不明白为什么没有达到第二个打印?userInfo
CKPartialErrorsByItemIDKey
NSDictionary<NSObject, Error>
partialErrorsByItemID
swift - CKModifyRecordsOperation 错误重试逻辑
我是 CloudKit 的新手,并且已经弄清楚了一次CKModifyRecordsOperation
添加/删除/删除一个的基本案例CKRecord
。我想用它来传递多个recordsToSave
and recordIDsToDelete
。error.userInfo[CKErrorRetryAfterKey]
我知道当有值时我需要重试。我的问题是,如何重试此操作?我一直在弄清楚如何知道要重试哪些记录。我必须重试所有记录吗?我可以在哪个完成块中重试,还是两者兼而有之?
我的代码在下面带有我不明白如何重试的注释。
swift - 服务器记录中的 CKAsset 不包含 fileURL,甚至无法检查 nil
当我使用保存策略保存包含CKAsset
(只是 JPG 图像)的记录时,我正在测试同步冲突 我收到错误消息。这将为我返回解决冲突的有用信息,包括我尝试保存的信息以及记录的当前服务器版本。第一个在,第二个在。CKModifyRecordsOperation
.IfServerRecordUnchanged
CKErrorCode.ServerRecordChanged
CKError
CKRecord
error.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。我希望至少能够检查零。我想把它放在那里,以防它帮助其他人。
ios - CloudKit - partialFailure 和 limitExceeded
概括
在CloudKit
想知道所有可能CKError.Code
的情况.partialFailure
。
目前我只为部分失败处理以下CKError.Code
内容。
假设:
.serverRecordChanged
//仅在保存记录时适用.zoneNotFound
//仅在获取区域时适用.unknownItem
//仅在获取项目时适用.batchRequestFailed
//仅在自定义区域保存记录时适用
- 从技术上讲,partialFailure 可以抛出任何
CKError
错误,但从逻辑上讲,partialFailure 是项目级别的失败,而不是操作级别的失败,因此partialFailure
不会包含操作级别的错误,例如networkUnavailable
//badContainer
。badDatabase
- 请参阅如何
partialFailure
处理 - https://developer.apple.com/library/content/samplecode/CloudKitShare/Introduction/Intro.html(搜索handlePartialError
) -
问题:
对于
partialFailure
,上述是唯一可能的错误代码吗?错误是否仅可能是错误
serverRecordChanged
的一部分?(完成处理程序返回的错误是否不会直接包含 , ,而只有 错误可能包含它们?)zoneNotFound
unknownItem
partialFailure
serverRecordChanged
zoneNotFound
unknownItem
partialFailure
我对上述每个错误何时正确的评论是否正确?(仅适用于...)
是为操作和操作
limitExceeded
抛出错误还是仅适用于操作?CKFetch
CKModify
CKModify
ios - IOS:没有互联网连接时未调用 fetchRecordZoneChangesCompletionBlock
我在我的应用程序中使用 CloudKit。要从 iCloud 中检索所有更改,我使用操作 CKFetchRecordZoneChangesOperation。当我在没有活动 Internet 连接的情况下添加此操作时,永远不会调用 fetchRecordZoneChangesCompletionBlock。
我确实希望调用此完成块时出现错误 CKError.networkUnavailable。
我正在使用 swift 3。
我可能误解了一些事情。有人可以解释我错过了什么吗?