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.cancelAsyncOpenOnNonFatalErrorstrue 로 설정된 경우 연결 실패 시 비동기 열기가 취소되고 오류가 완료 핸들러에 보고되는 경우입니다.

    연결 시간 초과는 이러한 오류 코드 중 하나로 보고되지 않고 (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