RLMClientResetMode

Objective-C

enum RLMClientResetMode : NSUInteger {}

Swift

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

确定客户端重置期间的文件行为。

@see: https ://mongodb.com/zh-cn/docs/realm/sync/error-handling/client-resets/

  • 在 Realm 的本地副本与备份远程副本分离后,写入 Realm 的数据将存在于 Realm 文件的本地恢复副本中。 重新下载的 Realm 最初仅包含在服务器上备份 Realm 时存在的数据。

    @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.
    

    声明

    Objective-C

    RLMClientResetModeManual = 0

    Swift

    case manual = 0
  • 已弃用

    使用 RLMClientResetModeDiscardUnsyncedChanges

    所有未同步的本地更改都将自动丢弃,本地状态将自动恢复为来自服务器的最新状态。 然后,可以在帖子客户端重置回调块中恢复未同步的更改。

    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``
    

    声明

    Objective-C

    RLMClientResetModeDiscardLocal = 1

    Swift

    case discardLocal = 1
  • 所有未同步的本地更改都将自动丢弃,本地状态将自动恢复为来自服务器的最新状态。 然后,可以在帖子客户端重置回调块中恢复未同步的更改。

    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``
    

    声明

    Objective-C

    RLMClientResetModeDiscardUnsyncedChanges = 1

    Swift

    static var discardUnsyncedChanges: RLMClientResetMode { get }
  • 客户端设备将下载一个 Realm,该 Realm 反映客户端重置后服务器的最新状态。 在本地运行恢复进程,尝试将服务器版本与客户端重置发生之前的任何本地更改集成。

    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``
    

    声明

    Objective-C

    RLMClientResetModeRecoverUnsyncedChanges = 2

    Swift

    case recoverUnsyncedChanges = 2
  • 客户端设备将下载一个域,其中包含反映最新服务器版本的对象。在本地运行恢复进程,尝试将服务器版本与客户端重置发生之前的任何本地更改集成。

    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``
    

    声明

    Objective-C

    RLMClientResetModeRecoverOrDiscardUnsyncedChanges = 3

    Swift

    case recoverOrDiscardUnsyncedChanges = 3