While troubleshooting CloudKit bugs, I came across the excellent post General Findings about NSPersistentCloudKitContainer. I followed their lead and added an observer to NSPersistentCloudKitContainer, and was able to log a lot (a LOT) of CKError
s, but somehow only caught the raw Int
values and not the case names.
Raw value | Case name | Cause |
---|---|---|
1 | internalError | A nonrecoverable error that CloudKit encounters. |
2 | partialFailure | An operation completed with partial failures. |
3 | networkUnavailable | The network is unavailable. |
4 | networkFailure | A network is available, but CloudKit is inaccessible. |
5 | badContainer | You used an unknown or unauthorized container. |
6 | serviceUnavailable | CloudKit is unavailable. |
7 | requestRateLimited | CloudKit is rate-limiting requests. |
8 | missingEntitlement | The app is missing a required entitlement. |
9 | notAuthenticated | The user is unauthenticated. |
10 | permissionFailure | The user doesn’t have permission to save or fetch data. |
11 | unknownItem | The specified record doesn’t exist. |
12 | invalidArguments | The request contains invalid information. |
13 | resultsTruncated | (Deprecated) CloudKit truncated a query’s results. |
14 | serverRecordChanged | CloudKit rejected a record because the server’s version is different. |
15 | serverRejectedRequest | CloudKit rejected the request. |
16 | assetFileNotFound | The system can’t find the specified asset. |
17 | assetFileModified | The system modified an asset while saving it. |
18 | incompatibleVersion | The current app version is older than the oldest allowed version. |
19 | constraintViolation | The server rejected the request because of a unique constraint violation. |
20 | operationCancelled | An operation cancelled. |
21 | changeTokenExpired | The change token expired. |
22 | batchRequestFailed | The system rejected the entire batch of changes. |
23 | zoneBusy | The server is too busy to handle the record zone operation. |
24 | badDatabase | The operation can’t complete for the specified database. |
25 | quotaExceeded | Saving a record exceeded the user’s storage quota. |
26 | zoneNotFound | The specified record zone doesn’t exist. |
27 | limitExceeded | The request’s size exceeds the limit. |
28 | userDeletedZone | The user deleted a record zone using the Settings app. |
29 | tooManyParticipants | A share has too many participants. |
30 | alreadyShared | CloudKit attempted to share a record with an existing share. |
31 | referenceViolation | CloudKit can’t find the target of a reference. |
32 | managedAccountRestricted | CloudKit rejected a request due to a managed-account restriction. |
33 | participantMayNeedVerification | The user isn’t a participant of the share. |
34 | serverResponseLost | CloudKit is unable to maintain the network connection and provide a response. |
35 | assetNotAvailable | The system can’t access the specified asset. |
36 | accountTemporarilyUnavailable | The user’s iCloud account is temporarily unavailable. |