RLMSyncError
Objective-C
enum RLMSyncError : NSInteger {}
스위프트
typealias RLMSyncError.Code._ErrorType = RLMSyncError
동기화 관리자 오류 처리기 또는 비동기 작업을 수행하는 동기화 관련 API의 콜백에서 보고할 수 있는 문제와 관련된 오류입니다.
-
세션(동기화를 위해 열린 특정 Realm)에 문제가 있음을 나타내는 오류입니다.
선언
Objective-C
RLMSyncErrorClientSessionError = 4
스위프트
case clientSessionError = 4
-
특정 사용자에게 문제가 있음을 나타내는 오류입니다.
선언
Objective-C
RLMSyncErrorClientUserError = 5
스위프트
case clientUserError = 5
-
기본 동기화 엔진에 복구할 수 없는 내부 문제를 나타내는 오류입니다.
선언
Objective-C
RLMSyncErrorClientInternalError = 6
스위프트
case clientInternalError = 6
-
Realm을 재설정해야 함을 나타내는 오류입니다.
Atlas App Services에 오류가 발생하여 백업에서 복원해야 했기 때문에 동기화된 Realm을 재설정해야 할 수 있습니다. 원격 Realm의 백업 복사본이 Realm의 로컬 복사본보다 이전 버전인 경우 서버는 클라이언트에게 Realm을 재설정하도록 요청합니다.
재설정 프로세스는 다음과 같습니다: Realm의 로컬 복사본이 보관을 위해 복구 디렉토리에 복사된 다음 원래 위치에서 삭제됩니다. 다음에 해당 파티션 값에 대한 Realm이 열리면 Realm은 Atlas App Services에서 자동으로 다시 다운로드되며 정상적으로 사용할 수 있습니다.
백업 원격 복사본에서 분기된 Realm의 로컬 복사본 이후에 Realm에 기록된 데이터는 Realm 파일의 로컬 복구 복사본에 존재합니다. 다시 다운로드한 Realm에는 처음에는 Realm이 서버에 백업된 시점의 데이터만 포함됩니다.
클라이언트 재설정 프로세스는 두 가지 방법 중 하나로 시작할 수 있습니다.
userInfo
딕셔너리는kRLMSyncErrorActionTokenKey
키 아래에 불투명 토큰 객체를 포함하고 있습니다. 클라이언트 재설정 프로세스를 즉시 수행하기 위해 이 토큰을+[RLMSyncSession immediatelyHandleError:]
(으)로 전달할 수 있습니다. 이 작업은 앱이 앱을 닫고 모든 스레드에서 문제가 되는 Realm의 모든 인스턴스를 무효화한 후에만 수행해야 합니다(자동 릴리스 풀은 이를 보장하기 어려울 수 있습니다).+[RLMSyncSession immediatelyHandleError:]
이(가) 호출되지 않으면 다음에 앱이 실행되고App
이(가) 초기화될 때 클라이언트 재설정 프로세스가 자동으로 수행됩니다.userInfo
딕셔너리의kRLMSyncPathOfRealmBackupCopyKey
키 값은 복구된 Realm 사본의 경로를 설명합니다. 이 복사본은 클라이언트 재설정 프로세스가 시작될 때까지 실제로 생성되지 않습니다.~를 참조하세요.
-[NSError rlmSync_errorActionToken]
,-[NSError rlmSync_clientResetBackedUpRealmPath]
선언
Objective-C
RLMSyncErrorClientResetError = 7
스위프트
case clientResetError = 7
-
사용자에게 동기화된 Realm에서 작업을 수행할 수 있는 권한이 없음을 나타내는 오류입니다. 예를 들어, 사용자가 최소한 읽기 액세스 권한이 없는 Realm을 열려고 하거나 읽기 액세스 권한만 있는 Realm에 쓰려고 하면 이 오류가 발생할 수 있습니다.
이 오류는 사용자가
asyncOpen()
API를 사용하지 않고 읽기 전용 권한이 있는 Realm을 잘못 여는 경우에도 발생할 수 있습니다.권한 거부 오류가 발생한 Realm은 기본적으로 플래그가 지정되어 다음에 애플리케이션이 시작될 때 로컬 복사본이 삭제됩니다.
userInfo
딕셔너리는kRLMSyncErrorActionTokenKey
키 아래에 불투명 토큰 객체를 포함하고 있습니다. 로컬 사본을 즉시 삭제하기 위해 이 토큰을+[RLMSyncSession immediatelyHandleError:]
(으)로 전달할 수 있습니다. 이 작업은 앱이 앱을 닫고 모든 스레드에서 문제가 되는 Realm의 모든 인스턴스를 무효화한 후에만 수행해야 합니다(자동 릴리스 풀은 이를 보장하기 어려울 수 있습니다).경고
Realm에 권한 거부 오류가 발생한 경우 Realm을 다시 열기 전에 해당 파일을 삭제하는 것이 좋습니다.
~를 참조하세요.
-[NSError rlmSync_errorActionToken]
선언
Objective-C
RLMSyncErrorPermissionDeniedError = 9
스위프트
case permissionDeniedError = 9
-
서버가 요청된 Flexible Sync 구독을 거부했음을 나타내는 오류입니다.
선언
Objective-C
RLMSyncErrorInvalidFlexibleSyncSubscriptions = 10
스위프트
case invalidFlexibleSyncSubscriptions = 10
-
서버가 이 클라이언트의 쓰기를 되돌렸음을 나타내는 오류입니다. 이는 쓰기 권한이 없거나 객체가 활성 구독과 일치하지 않는 Flexible sync Realm에서 생성되었기 때문에 발생할 수 있습니다.
이 오류는 정보 제공용이므로 명시적으로 처리할 필요가 없습니다.
선언
Objective-C
RLMSyncErrorWriteRejected = 11
스위프트
case writeRejected = 11
-
보다 구체적인 오류 코드가 없는 연결 오류가 발생했습니다.
Realm은 내부적으로 적절한 백오프를 사용하여 연결 재시도를 처리하므로 일반적으로 연결 오류가 기록되고 오류 처리기에 보고되지 않습니다. 예외는
RLMSyncConfiguration.cancelAsyncOpenOnNonFatalErrors
가true
로 설정된 경우 연결 실패 시 비동기 열기가 취소되고 오류가 완료 핸들러에 보고되는 경우입니다.연결 시간 초과는 이러한 오류 코드 중 하나로 보고되지 않고 (errorDomain: NSPosixErrorDomain, 오류: ETIMEDOUT)로 보고됩니다.
선언
Objective-C
RLMSyncErrorConnectionFailed = 12
스위프트
case connectionFailed = 12
-
유효하지 않은 인증서와 같은 TLS 문제로 인해 서버 연결에 실패했습니다.
선언
Objective-C
RLMSyncErrorTLSHandshakeFailed = 13
스위프트
case tlsHandshakeFailed = 13
-
서버에 사용자에게 알리고 싶지만 반드시 치명적이지는 않은 오류가 발생했습니다.
이 코드에 오류가 발생하면 동기화가 활성화되지 않았거나 에지 서버 앱에 연결을 시도 중임을 나타낼 수 있습니다.
선언
Objective-C
RLMSyncErrorServerWarning = 14
스위프트
case serverWarning = 14