Bri*_*n M 4 ios swift cloudkit
我已经构建了基本的CloudKit同步引擎并且正常工作,现在我正在充实我的错误处理.我想要一个全面的列表,列出了收到.partialFailure响应代码时每条记录可能出现的错误.
文档中有一个包含所有错误代码的列表,但在我的搜索中,对于我可能会在partialErrorsByItemID字典中显示哪些内容并且仅显示为错误代码(或者是他们可以同时出现,也许只发送一条记录?).
在Apple CloudKit Share代码示例中,有一个CloudKitError类来处理错误,并处理以下部分错误:
.serverRecordChanged
.zoneNotFound
.unknownItem
.batchRequestFailed
Run Code Online (Sandbox Code Playgroud)
但我不认为这是详尽无遗的,因为班级的其他人在处理不是.partialFailure的错误时并非详尽无遗.肯定.invalidArguments可能是部分失败错误?
这是我想我需要涵盖的内容:
.alreadyShared (if sharing)
.assetFileModified (if using Assets)
.assetFileNotFound (if using Assets)
.batchRequestFailed
.constraintViolation
.invalidArguments
.referenceViolation (if sharing)
.serverRecordChanged
.unknownItem
.zoneBusy?
.zoneNotFound
Run Code Online (Sandbox Code Playgroud)
最后,因为这些是作为部分错误处理的,我是否还需要处理它们作为CloudKit的错误代码响应,就像处理非部分错误代码(如.serviceUnavailable)一样?我没有使用CKDatabase便捷方法,我正在使用像CKModifyRecordsOperation这样的完整操作,如果这很重要?
提前致谢!
在CloudKit中,您有便捷API和批处理操作API.如果您只在应用中使用便捷API,则表示您一次添加/更新/获取/删除单个记录.因此,您永远不会得到,CKErrorPartialFailure因为您不是批量与iCloud Server通信.如果您在应用程序中仅使用Batch Operations API,那么您将获得CKErrorPartialFailure.这是一个高级错误,实际上包含操作中包含的每个记录/区域/订阅的子错误(CKError实例).
我同意你的观点,文件不清楚什么只能作为部分错误发生,什么不能发生.再加上两种情况都会发生什么.要回答这个问题,您可以采用一种简单的方法,假设在两种情况下都可能发生所有错误,或者通过找出每种错误的可能情况,您可以采用另一种更详细的方法.对于第二种方法,我必须模拟不同的错误情况,并查看从iCloud Server获得的错误.请考虑以下几点:
CKInternalError, CKServerRejectedRequest, CKServiceUnavailableCKBadContainer,CKMissingEntitlement,CKBadDatabaseCKIncompatibleVersion, CKRequestRateLimited, CKOperationCancelled, CKLimitExceeded, CKServerResponseLost, CKManagedAccountRestrictedCKBatchRequestFailed.这只适用于原子CKOperationsCKNotAuthenticated, CKNetworkUnavailable, CKNetworkFailure.它们作为记录区域操作的部分错误出现,而它们作为记录操作的非部分错误出现.CKUserDeletedZone , CKZoneBusy.例外:CKChangeTokenExpired我在执行基于操作的呼叫时将其视为非部分错误.CKZoneNotFound作为部分和非部分错误发生.如果您使用CKModifyRecordsOperation上传到不存在的区域,则会出现部分错误.但是,如果您使用CKFetchRecordZoneChanges从不存在的区域获取,则会出现非部分错误.CKInvalidArguments提到了使用Batch Operations API时可能出现的部分错误之一.但是,我尝试了不同的错误方案(例如:在同一请求中创建/更新记录),并且它作为非部分错误发生.因此,为了安全起见,我可能会处理部分和非部分错误.CKQuotaExceeded作为非部分错误发生.我设法通过填充来自除照片之外的其他应用程序的数据的iCloud存储来重现该错误.备份将填充大部分存储空间,然后填写剩余的可用空间将不难.CKUnkownItem使用便捷API时出现非部分错误.使用Batch Operation API时也会出现部分错误.| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |