ClientResetMode
@frozen
public enum ClientResetMode
Uma enumeração usada para determinar o comportamento de recuperação de arquivos no evento de um reinício do cliente. Padrão é .recoverUnsyncedChanges
.
Veja
RLMClientResetMode
-
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.
Se o
.discardLocal
estiver habilitado, mas a operação de reinício do cliente não puder ser concluída, o processo de reinício do cliente será revertido para o modo manual. Exemplo: durante uma alteração de esquema destrutiva, esse modo falhará e invocará o manipulador manual de reinício do cliente.Veja também
Veja também
RLMClientResetBeforeBlock
exemplo de usouser.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges({ before in var recoveryConfig = Realm.Configuration() recoveryConfig.fileURL = myRecoveryPath do { before.writeCopy(configuration: recoveryConfig) // The copied realm could be used later for recovery, debugging, reporting, etc. } catch { // handle error } }, nil))
Veja também
Veja também
RLMClientResetAfterBlock
Exemplo de uso
user.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges( nil, { before, after in // This block could be used to add custom recovery logic, back-up a realm file, send reporting, etc. for object in before.objects(myClass.self) { let res = after.objects(myClass.self) if (res.filter("primaryKey == %@", object.primaryKey).first != nil) { // ...custom recovery logic... } else { // ...custom recovery logic... } } }))
Declaração
Parâmetros
afterReset
uma função invocada após o processo de reinício do cliente ter ocorrido.
before
uma cópia congelada do estado do Realm local antes do reinício do cliente.
after
uma instância ao vivo do Realm após o reinício do cliente.
-
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.
Se o
.discardUnsyncedChanges
estiver habilitado, mas a operação de reinício do cliente não puder ser concluída, o processo de reinício do cliente será revertido para o modo manual. Exemplo: durante uma alteração de esquema destrutiva, esse modo falhará e invocará o manipulador manual de reinício do cliente.Veja também
Veja também
RLMClientResetBeforeBlock
exemplo de usouser.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges({ before in var recoveryConfig = Realm.Configuration() recoveryConfig.fileURL = myRecoveryPath do { before.writeCopy(configuration: recoveryConfig) // The copied realm could be used later for recovery, debugging, reporting, etc. } catch { // handle error } }, nil))
Veja também
Veja também
RLMClientResetAfterBlock
Exemplo de uso
user.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges( nil, { before, after in // This block could be used to add custom recovery logic, back-up a realm file, send reporting, etc. for object in before.objects(myClass.self) { let res = after.objects(myClass.self) if (res.filter("primaryKey == %@", object.primaryKey).first != nil) { // ...custom recovery logic... } else { // ...custom recovery logic... } } }))
Declaração
Parâmetros
afterReset
uma função invocada após o processo de reinício do cliente ter ocorrido.
before
uma cópia congelada do estado do Realm local antes do reinício do cliente.
after
uma instância ao vivo do Realm após o reinício do cliente.
-
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.
As alterações são integradas com as seguintes regras:
- Objeto criados localmente que não foram sincronizados antes do reinício do cliente serão integrados.
- Se um objeto foi excluído no servidor, mas foi modificado no cliente, a exclusão terá precedência e a atualização será descartada
- Se um objeto foi excluído no cliente, mas não no servidor, a instrução de exclusão do cliente será aplicada.
- No caso de atualizações conflitantes no mesmo campo, a atualização do cliente é aplicada.
Se a integração de recuperação falhar, o processo de reinício do cliente voltará para
ClientResetMode.manual
. A integração de recuperação falhará se a configuração “Recuperação de Cliente” não estiver habilitada no servidor. A integração também pode falhar no evento de uma alteração de esquema incompatível.Veja também
Veja também
RLMClientResetBeforeBlock
exemplo de usouser.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges({ before in var recoveryConfig = Realm.Configuration() recoveryConfig.fileURL = myRecoveryPath do { before.writeCopy(configuration: recoveryConfig) // The copied realm could be used later for recovery, debugging, reporting, etc. } catch { // handle error } }, nil))
Veja também
Veja também
RLMClientResetAfterBlock
Exemplo de uso
user.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges( nil, { before, after in // This block could be used to add custom recovery logic, back-up a realm file, send reporting, etc. for object in before.objects(myClass.self) { let res = after.objects(myClass.self) if (res.filter("primaryKey == %@", object.primaryKey).first != nil) { // ...custom recovery logic... } else { // ...custom recovery logic... } } }))
Declaração
Parâmetros
afterReset
uma função invocada após o processo de reinício do cliente ter ocorrido.
before
uma cópia congelada do estado do Realm local antes do reinício do cliente.
after
uma instância ao vivo do Realm após o reinício do cliente.
-
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.
As alterações são integradas com as seguintes regras:
- Objeto criados localmente que não foram sincronizados antes do reinício do cliente serão integrados.
- Se um objeto foi excluído no servidor, mas foi modificado no cliente, a exclusão terá precedência e a atualização será descartada
- Se um objeto foi excluído no cliente, mas não no servidor, a instrução de exclusão do cliente será aplicada.
- No caso de atualizações conflitantes no mesmo campo, a atualização do cliente é aplicada.
Se a integração de recuperação falhar, o processo de reinício do cliente voltará para
ClientResetMode.discardUnsyncedChanges
. A integração de recuperação falhará se a configuração “Recuperação de Cliente” não estiver habilitada no servidor. A integração também pode falhar no evento de uma alteração de esquema incompatível.Veja também
Veja também
RLMClientResetBeforeBlock
exemplo de usouser.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges({ before in var recoveryConfig = Realm.Configuration() recoveryConfig.fileURL = myRecoveryPath do { before.writeCopy(configuration: recoveryConfig) // The copied realm could be used later for recovery, debugging, reporting, etc. } catch { // handle error } }, nil))
Veja também
Veja também
RLMClientResetAfterBlock
Exemplo de uso
user.configuration(partitionValue: "myPartition", clientResetMode: .discardUnsyncedChanges( nil, { before, after in // This block could be used to add custom recovery logic, back-up a realm file, send reporting, etc. for object in before.objects(myClass.self) { let res = after.objects(myClass.self) if (res.filter("primaryKey == %@", object.primaryKey).first != nil) { // ...custom recovery logic... } else { // ...custom recovery logic... } } }))
Declaração
Parâmetros
afterReset
uma função invocada após o processo de reinício do cliente ter ocorrido.
before
uma cópia congelada do estado do Realm local antes do reinício do cliente.
after
uma instância ao vivo do Realm após o reinício do cliente.
-
Veja também
RLMClientResetModeManual
O manipulador do modo de reinício do cliente manual pode ser definido em dois locais:
- Como um argumento ErrorReportingBlock na enumeração ClientResetMode ('
ErrorReportingBlock?
= nil'). - Como um ErrorReportingBlock na propriedade
SyncManager.errorHandler
.
Veja também
RLMSyncManager.errorHandler
Durante um
RLMSyncErrorClientResetError
o bloqueio executado é determinado pelas seguintes regras- Se um bloco de relatório de erros for definido em
ClientResetMode
e oSyncManager
, o blocoClientResetMode
será executado. - Se um bloco de relatório de erros for definido no
ClientResetMode
ou noSyncManager
, mas não em ambos, o bloco único será executado. - Se nenhum bloco for definido em nenhum dos locais, a redefinição do cliente não será tratada. O aplicativo provavelmente precisará ser reiniciado e as alterações locais não sincronizadas poderão ser perdidas.
Observação
OSyncManager.errorHandler
ainda é invocado em todos osRLMSyncError
s diferentes deRLMSyncErrorClientResetError
.Veja também
veja tambémRLMSyncError
para uma lista exaustiva.Declaração
Swift
@preconcurrency case manual(errorHandler: ErrorReportingBlock? = nil)
- Como um argumento ErrorReportingBlock na enumeração ClientResetMode ('