RLMClientResetMode

Objective-C

enum RLMClientResetMode : NSUInteger {}

Swift

@_nonSendable(_assumed) enum RLMClientResetMode : UInt, @unchecked Sendable

Determina o comportamento do arquivo durante um reinício do cliente.

@veja: https://mongodb.com/pt-br/docs/realm/sync/error-handling/client-resets/

  • Os dados gravados no Realm após a cópia local do Realm particionar da cópia remota de backup estarão presentes na cópia de recuperação local do Arquivo de Realm. O Realm rebaixado conterá inicialmente apenas os dados presentes no momento em que o Realm foi copiado no servidor.

    @see: ``rlmSync_clientResetBackedUpRealmPath`` and ``RLMSyncErrorActionToken`` for more information on accessing the recovery directory and error information.
    
    The manual client reset mode handler can be set in two places:
     1. As an ErrorReportingBlock argument at ``RLMSyncConfiguration.manualClientResetHandler``.
     2. As an ErrorReportingBlock in the ``RLMSyncManager.errorHandler`` property.
     @see: ``RLMSyncManager.errorHandler``
    
     When an ``RLMSyncErrorClientResetError`` is thrown, the following rules determine which block is executed:
     - If an error reporting block is set in ``.manualClientResetHandler`` and the ``RLMSyncManager.errorHandler``, the ``.manualClientResetHandler`` block will be executed.
     - If an error reporting block is set in either the ``.manualClientResetHandler`` or the ``RLMSyncManager``, but not both, the single block will execute.
     - If no block is set in either location, the client reset will not be handled. The application will likely need to be restarted and unsynced local changes may be lost.
    @note: The ``RLMSyncManager.errorHandler`` is still invoked under all ``RLMSyncError``s *other than* ``RLMSyncErrorClientResetError``.
    - see: ``RLMSyncError`` for an exhaustive list.
    

    Declaração

    Objective-C

    RLMClientResetModeManual = 0

    Swift

    case manual = 0
  • Obsoleto(a)

    Usar RLMClientResetModeDiscardUnsyncedChanges

    Todas as alterações locais não sincronizadas são automaticamente descartadas e o estado local é automaticamente revertido para o estado mais recente do servidor. As alterações não sincronizadas podem ser recuperadas no bloco de chamada de resposta de reinício do cliente.

    If ``RLMClientResetModeDiscardLocal`` is enabled but the client reset operation is unable to complete
    then the client reset process reverts to manual mode. Example) During a destructive schema change this
    mode will fail and invoke the manual client reset handler.
    
    The RLMClientResetModeDiscardLocal mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``.
    @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock``
    

    Declaração

    Objective-C

    RLMClientResetModeDiscardLocal = 1

    Swift

    case discardLocal = 1
  • Todas as alterações locais não sincronizadas são automaticamente descartadas e o estado local é automaticamente revertido para o estado mais recente do servidor. As alterações não sincronizadas podem ser recuperadas no bloco de chamada de resposta de reinício do cliente.

    If ``RLMClientResetModeDiscardUnsyncedChanges`` is enabled but the client reset operation is unable to complete
    then the client reset process reverts to manual mode. Example) During a destructive schema change this
    mode will fail and invoke the manual client reset handler.
    
    The RLMClientResetModeDiscardUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``.
    @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock``
    

    Declaração

    Objective-C

    RLMClientResetModeDiscardUnsyncedChanges = 1

    Swift

    static var discardUnsyncedChanges: RLMClientResetMode { get }
  • O dispositivo cliente baixará um Realm que reflete o estado mais recente do servidor após um reinício do cliente. Um processo de recuperação é executado localmente em uma tentativa de integrar a versão do servidor com quaisquer alterações locais anteriores à ocorrência do reinício do cliente.

    The changes are integrated with the following rules:
    1. Objects created locally that were not synced before client reset will be integrated.
    2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded
    3. If an object was deleted on the client, but not the server, then the client delete instruction is applied.
    4. In the case of conflicting updates to the same field, the client update is applied.
    
    If the recovery integration fails, the client reset process falls back to ``RLMClientResetModeManual``.
    The recovery integration will fail if the "Client Recovery" setting is not enabled on the server.
    Integration may also fail in the event of an incompatible schema change.
    
    The RLMClientResetModeRecoverUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``.
    @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock``
    

    Declaração

    Objective-C

    RLMClientResetModeRecoverUnsyncedChanges = 2

    Swift

    case recoverUnsyncedChanges = 2
  • O dispositivo cliente baixará um Realm com objeto que refletem a versão mais recente do servidor. Um processo de recuperação é executado localmente em uma tentativa de integrar a versão do servidor com quaisquer alterações locais anteriores à ocorrência do reinício do cliente.

    The changes are integrated with the following rules:
    1. Objects created locally that were not synced before client reset will be integrated.
    2. If an object has been deleted on the server, but was modified on the client, the delete takes precedence and the update is discarded
    3. If an object was deleted on the client, but not the server, then the client delete instruction is applied.
    4. In the case of conflicting updates to the same field, the client update is applied.
    
    If the recovery integration fails, the client reset process falls back to ``RLMClientResetModeDiscardUnsyncedChanges``.
    The recovery integration will fail if the "Client Recovery" setting is not enabled on the server.
    Integration may also fail in the event of an incompatible schema change.
    
    The RLMClientResetModeRecoverOrDiscardUnsyncedChanges mode supports two client reset callbacks -- ``RLMClientResetBeforeBlock``, ``RLMClientResetAfterBlock`` -- which can be passed as arguments when creating the ``RLMSyncConfiguration``.
    @see: ``RLMClientResetAfterBlock`` and ``RLMClientResetBeforeBlock``
    

    Declaração

    Objective-C

    RLMClientResetModeRecoverOrDiscardUnsyncedChanges = 3

    Swift

    case recoverOrDiscardUnsyncedChanges = 3