RMSyncError
Objective-C
enum RLMSyncError : NSInteger {}
Swift
typealias RLMSyncError.Code._ErrorType = RLMSyncError
同期マネージャーのエラー ハンドラー、または非同期操作を実行する同期関連の API のコールバックによって報告される可能性のある問題に関連するエラー。
-
セッション(同期のために開かれた特定の Realm)の問題を示すエラー。
宣言
Objective-C
RLMSyncErrorClientSessionError = 4
Swift
case clientSessionError = 4
-
特定のユーザーの問題を示すエラー。
宣言
Objective-C
RLMSyncErrorClientUserError = 5
Swift
case clientUserError = 5
-
基礎の同期エンジンに関する内部的で回復不能な問題を示すエラー。
宣言
Objective-C
RLMSyncErrorClientInternalError = 6
Swift
case clientInternalError = 6
-
Realm をリセットする必要があることを示すエラー。
Atlas App Services でエラーが発生し、バックアップから復元する必要があったため、同期された Realm をリセットする必要がある場合があります。 リモート Realm のバックアップ コピーが Realm のローカル コピーよりも前のバージョンである場合、サーバーはクライアントに Realm をリセットするよう要求します。
リセット プロセスは次のとおりです。Realm のローカル コピーは、安全性を確保するためにリカバリ ディレクトリにコピーされ、元の場所から削除されます。 次回、そのパーティション値の Realm が開かれると、Realm は Atlas App Services から自動的に再ダウンロードされ、通常どおり使用できるようになります。
バックアップ リモート コピーから相違した Realm のローカル コピーの後に Realm に書き込まれたデータは、Realm ファイルのローカル リカバリ コピーに存在します。 再ダウンロードされた Realm には、最初は Realm がサーバー上でバックアップされていた時点でのデータのみが含まれます。
クライアント リセット プロセスは、2 つの方法のいずれかで開始されます。
userInfo
辞書には、キーkRLMSyncErrorActionTokenKey
の下に不変のトークン オブジェクトが含まれています。 このトークンを+[RLMSyncSession immediatelyHandleError:]
に渡すと、クライアント リセット プロセスをすぐに実行できます。 これは、アプリが閉じて、すべてのスレッド上のユーザー Realm のすべてのインスタンスを無効にした後にのみ実行する必要があります(自動リリース プールによりこれが保証されなくなる可能性があることに注意してください)。+[RLMSyncSession immediatelyHandleError:]
が呼び出されない場合、次回アプリが起動され、App
が初期化されたときに、クライアント リセット プロセスが自動的に実行されます。userInfo
辞書内のkRLMSyncPathOfRealmBackupCopyKey
キーの値は、Realm の復元されたコピーのパスを示します。 このコピーは、クライアントのリセット プロセスが開始されるまで実際には作成されません。詳細は、次を参照してください:
-[NSError rlmSync_errorActionToken]
,-[NSError rlmSync_clientResetBackedUpRealmPath]
宣言
Objective-C
RLMSyncErrorClientResetError = 7
Swift
case clientResetError = 7
-
同期された Realm に対して操作を実行する権限がないことを示すエラー。 たとえば、ユーザーは、少なくとも読み取りアクセス権のない Realm を開いてみましょう。または読み取りアクセス権のみを持つ Realm に書込み (write) しようとすると、このエラーが表示されることがあります。
このエラーは、
asyncOpen()
API を使用せずに読み取り専用権限を持つ Realm をユーザーが誤って開いた場合にも発生することがあります。権限拒否エラーが発生した Realm は、デフォルトではフラグが付けられ、次回のアプリケーション起動時にそのローカル コピーが削除されます。
userInfo
辞書には、キーkRLMSyncErrorActionTokenKey
の下に不変のトークン オブジェクトが含まれています。 このトークンを+[RLMSyncSession immediatelyHandleError:]
に渡すと、ローカルコピーがすぐに削除されます。 これは、アプリが閉じて、すべてのスレッド上のユーザー Realm のすべてのインスタンスを無効にした後にのみ実行する必要があります(自動リリース プールによりこれが保証されなくなる可能性があることに注意してください)。警告
Realm で権限拒否エラーが発生した場合は、再度開く前にファイルを削除することを強くお勧めします。
詳細は、次を参照してください:
-[NSError rlmSync_errorActionToken]
宣言
Objective-C
RLMSyncErrorPermissionDeniedError = 9
Swift
case permissionDeniedError = 9
-
リクエストされたFlexible Sync サブスクライブをサーバーが拒否したことを示すエラー。
宣言
Objective-C
RLMSyncErrorInvalidFlexibleSyncSubscriptions = 10
Swift
case invalidFlexibleSyncSubscriptions = 10
-
このクライアントによる書込み (write) がサーバーに取り消されたことを示すエラー。 これは、書込み (write) 権限がない場合、またはアクティブなサブスクリプションに一致しないFlexible Sync Realm でオブジェクトが作成されたために発生する可能性があります。
このエラーは情報提供であり、明示的な処理は必要ありません。
宣言
Objective-C
RLMSyncErrorWriteRejected = 11
Swift
case writeRejected = 11
-
より具体的なエラー コードのない接続エラーが発生しました。
Realm は適切なバックオフで接続の再試行を内部的に処理するため、接続エラーは通常ログに記録され、エラー ハンドラーに報告されません。 ただし、
RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors
がtrue
に設定されている場合は除きます。この場合、接続失敗時に非同期開始はキャンセルされ、エラーが完了ハンドラーに報告されます。接続タイムアウトは、これらのエラー コードのいずれかとしてではなく、(errorDomain: DNSPosixErrorDomain、error: ETIMEDOUT)として報告されることに注意してください。
宣言
Objective-C
RLMSyncErrorConnectionFailed = 12
Swift
case connectionFailed = 12
-
無効な証明書などの TLS の問題が原因で、サーバーへの接続に失敗しました。
宣言
Objective-C
RLMSyncErrorTLSHandshakeFailed = 13
Swift
case tlsHandshakeFailed = 13
-
サーバーでユーザーに認識したいエラーが発生しましたが、必ずしも致命的ではないエラーが発生しました。
このコードのエラーは、同期が有効になっていないか、エッジ サーバー アプリに接続しようとしているということを示している可能性があります。
宣言
Objective-C
RLMSyncErrorServerWarning = 14
Swift
case serverWarning = 14