Realm
@frozen
public struct Realm
extension Realm: Equatable
Uma instância Realm
(também conhecida como "um Realm") representa um reconhecimento de data center Realm.
Os domínios podem ser armazenados no disco (consulte init(path:)
) ou na memória (consulte Configuration
).
Realm
as instâncias são armazenadas em cache internamente e a construção de objetos Realm
equivalentes (por exemplo, usando o mesmo caminho ou identificador) produz uma sobrecarga limitada.
Se você quiser especificamente garantir que uma instância Realm
seja destruída (por exemplo, se você deseja abrir um Realm, verificar algumas propriedades e, em seguida, possivelmente excluir o arquivo Realm e reabri-lo), coloque o código que usa o Realm dentro de um autoreleasepool {}
e certifique-se de que você não tenha outras referências fortes para ele.
Aviso
aviso As instânciasRLMRealm
não congeladas são confinadas por thread e não podem ser compartilhadas entre threads ou filas de despacho. Tentar fazer isso fará com que uma exceção seja lançada. Você deve obter uma instância de RLMRealm
em cada thread ou fila em que deseja interagir com o Realm . Os realms podem ser confinados a uma fila de despacho em vez do thread em que são abertos, passando explicitamente na fila ao obter a instância RLMRealm
. Se isso não for feito, a tentativa de usar a mesma instância no despacho de vários blocos para a mesma fila pode falhar, pois as filas nem sempre são executadas no mesmo thread.
-
O valor
Configuration
que foi usado para criar a instânciaRealm
.Declaração
Swift
public var configuration: Configuration { get }
-
Indica se o Realm contém algum objeto.
Declaração
Swift
public var isEmpty: Bool { get }
-
Obtém uma instância do Realm padrão.
O Realm padrão é mantido como default.realm no diretório documento da sua aplicação no iOS e no diretório de suporte da aplicação do seu aplicativo no OS X.
O Realm padrão é criado usando o
Configuration
padrão, que pode ser alterado definindo a propriedadeRealm.Configuration.defaultConfiguration
para um novo valor.Lança
UmNSError
se o Realm não puder ser inicializado.Declaração
Swift
public init(queue: DispatchQueue? = nil) throws
Parâmetros
queue
Uma fila de despacho opcional à qual confinar o Realm. Se fornecida, essa Instância de Realm pode ser usada de dentro dos blocos despachados para a fila fornecida em vez de na thread atual.
-
Obtém uma instância
Realm
com a configuração fornecida.Lança
Um
NSError
se o Realm não puder ser inicializado.Declaração
Swift
public init(configuration: Configuration, queue: DispatchQueue? = nil) throws
Parâmetros
configuration
Um valor de configuração para utilizar ao criar o Realm.
queue
Uma fila de despacho opcional à qual confinar o Realm. Se fornecida, essa Instância de Realm pode ser usada de dentro dos blocos despachados para a fila fornecida em vez de na thread atual.
-
Obtém uma instância do
Realm
persistente em um URL de arquivo especificado.Lança
Um
NSError
se o Realm não puder ser inicializado.Declaração
Swift
public init(fileURL: URL) throws
Parâmetros
fileURL
A URL local do arquivo em que o Realm deve ser salvo.
-
Abra de forma assíncrona um Realm e entregue-o a um bloco na fila fornecida.
A abertura de um Realm de forma assíncrona executará todo o trabalho necessário para colocar o Realm em um estado utilizável (como a execução de migrações potencialmente demoradas) em um thread em segundo plano antes de ser enviado para a fila fornecida. Além disso, os Realms sincronizados aguardam que todo o conteúdo remoto disponível no momento em que a operação começou seja baixado e esteja disponível localmente.
O realm passado para a função da chamada de resposta está confinado à fila da chamada de resposta como se
Realm(configuration:queue:)
fosse usado.Declaração
Swift
@discardableResult public static func asyncOpen(configuration: Realm.Configuration = .defaultConfiguration, callbackQueue: DispatchQueue = .main, callback: @escaping (Result<Realm, Swift.Error>) -> Void) -> AsyncOpenTask
Parâmetros
configuration
Um objeto de configuração para usar ao abrir o Realm.
callbackQueue
A fila de despacho na qual a chamada de resposta deve ser executada.
callback
Um bloco de chamada de resposta. Se o Realm foi aberto com sucesso, ele será passado como um argumento. Caso contrário, um
Swift.Error
descrevendo o que deu errado será passado para o bloco.Valor de retorno
Um objeto de tarefa que pode ser usado para observar ou cancelar a abertura assíncrona.
-
Abra de forma assíncrona um Realm e entregue-o a um bloco na fila fornecida.
A abertura de um Realm de forma assíncrona executará todo o trabalho necessário para colocar o Realm em um estado utilizável (como a execução de migrações potencialmente demoradas) em um thread em segundo plano antes de ser enviado para a fila fornecida. Além disso, os Realms sincronizados aguardam que todo o conteúdo remoto disponível no momento em que a operação começou seja baixado e esteja disponível localmente.
O Realm passado para o editor está confinado à fila de chamada de resposta como se
Realm(configuration:queue:)
fosse usado.Declaração
Swift
@available(macOS 10.15, watchOS 6.0, iOS 13.0, iOSApplicationExtension 13.0, macOSApplicationExtension 10.15, tvOS 13.0, *) public static func asyncOpen(configuration: Realm.Configuration = .defaultConfiguration) -> RealmPublishers.AsyncOpenPublisher
Parâmetros
configuration
Um objeto de configuração para usar ao abrir o Realm.
callbackQueue
A fila de despacho na qual o AsyncOpenTask deve ser executado.
Valor de retorno
Um editor. Se o Realm foi aberto com sucesso, ele será recebido pelos assinantes. Caso contrário, um
Swift.Error
descrevendo o que deu errado será passado upstream. -
Um objeto de tarefa que pode ser usado para observar ou cancelar uma abertura assíncrona.
Quando um Realm sincronizado é aberto de forma assíncrona, o estado mais recente do Realm é baixado do servidor antes que o retorno de chamada de conclusão seja invocado. Este objeto de tarefa pode ser usado para observar o estado do download ou cancelá-lo. Isso deve ser usado em vez de tentar observar o download por meio da sessão de sincronização, pois a própria sessão de sincronização é criada de forma assíncrona e pode ainda não existir quando Realm.asyncOpen() retornar.
Veja maisDeclaração
Swift
@frozen public struct AsyncOpenTask
-
Executa ação contidas dentro do bloco fornecido dentro de uma transação de escrita.
Se o bloqueio gerar um erro, a transação será cancelada e todas as alterações feitas antes do erro serão revertidas.
Somente uma transação de escrita pode ser aberta por vez para cada Arquivo de Realm. As transações de escrita não podem ser aninhadas, e tentar iniciar uma transação de escrita em um Realm que já esteja em uma transação de escrita lançará uma exceção. As chamadas para
write
de instânciasRealm
para o mesmo Arquivo de Realm em outras threads ou outros processos serão bloqueadas até que a transação de escrita atual seja concluída ou cancelada.Antes de iniciar a transação de escrita, o
write
atualiza a instância doRealm
para a Versão do Realm, como se orefresh()
tivesse sido chamado e gera notificações, se aplicável. Isso não tem efeito se o Realm já estiver atualizado.Você pode ignorar a notificação de blocos de notificações específicos sobre as alterações feitas nessa transação de escrita passando seus tokens de notificação associados. Isso é útil principalmente quando a transação de escrita está salvando as alterações já feitas na interface do usuário e você não deseja que o bloqueio de notificação tente reaplicar as mesmas alterações.
Os tokens passados para essa função devem ser para notificações desse Realm que foram adicionados na mesma thread em que a transação de escrita está sendo executada. As notificações de threads diferentes não podem ser ignoradas usando esse método.
Lança
Um
NSError
se a transação não puder ser concluída com sucesso. Seblock
lançar, a função lançará oErrorType
propagado.Declaração
Swift
@discardableResult public func write<Result>(withoutNotifying tokens: [NotificationToken] = [], _ block: (() throws -> Result)) throws -> Result
Parâmetros
tokens
Uma array de tokens de notificação que foram retornados após a adição de chamadas de resposta que você não deseja que sejam notificadas sobre as alterações feitas nessa transação de escrita.
block
O bloco contendo ação a serem executadas.
Valor de retorno
O valor retornado do bloco, se houver.
-
Inicia uma transação de escrita no Realm.
Somente uma transação de escrita pode ser aberta por vez para cada Arquivo de Realm. As transações de escrita não podem ser aninhadas, e tentar iniciar uma transação de escrita em um Realm que já esteja em uma transação de escrita lançará uma exceção. As chamadas para
beginWrite
de instânciasRealm
para o mesmo Arquivo de Realm em outras threads ou outros processos serão bloqueadas até que a transação de escrita atual seja concluída ou cancelada.Antes de iniciar a transação de escrita, o
beginWrite
atualiza a instância doRealm
para a Versão do Realm, como se orefresh()
tivesse sido chamado e gera notificações, se aplicável. Isso não tem efeito se o Realm já estiver atualizado.Raramente é uma boa ideia que as transação de escrita abrangem vários ciclos do loop de eventos, mas se você desejar fazer isso, precisará garantir que o Realm que participa da transação de escrita seja mantido ativo até que a transação de escrita seja confirmada.
Declaração
Swift
public func beginWrite()
-
Confirma todas as operações de gravação na transação de escrita atual e termina a transação.
Após salvar as alterações e concluir a transação de escrita, todos os blocos de notificação registrados nessa instância
Realm
específica são chamados de forma síncrona. Os blocos de notificação para instânciasRealm
em outras threads e blocos registrados para qualquer collection de Realm (incluindo aqueles na thread atual) estão programados para serem chamados de forma síncrona.Você pode ignorar a notificação de blocos de notificações específicos sobre as alterações feitas nessa transação de escrita passando seus tokens de notificação associados. Isso é útil principalmente quando a transação de escrita está salvando as alterações já feitas na interface do usuário e você não deseja que o bloqueio de notificação tente reaplicar as mesmas alterações.
Os tokens passados para essa função devem ser para notificações desse Realm que foram adicionados na mesma thread em que a transação de escrita está sendo executada. As notificações de threads diferentes não podem ser ignoradas usando esse método.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Lança
Um
NSError
se a transação não puder ser gravada devido à falta de espaço em disco ou a outros erros de E/S.Declaração
Swift
public func commitWrite(withoutNotifying tokens: [NotificationToken] = []) throws
Parâmetros
tokens
Uma array de tokens de notificação que foram retornados após a adição de chamadas de resposta que você não deseja que sejam notificadas sobre as alterações feitas nessa transação de escrita.
-
Reverte todas as gravações feitas na transação de escrita atual e encerra a transação.
Isso reverte todos os objetos no Realm para o estado em que estavam no início da transação de escrita e, em seguida, encerra a transação.
Isso restaura os dados dos objetos excluídos, mas não revigora as instâncias de objetos invalidados. Quaisquer
Object
s que foram adicionados ao Realm serão invalidados em vez de se tornarem não gerenciados.Dado o seguinte código:
let oldObject = objects(ObjectType).first! let newObject = ObjectType() realm.beginWrite() realm.add(newObject) realm.delete(oldObject) realm.cancelWrite()
Tanto
oldObject
quantonewObject
retornarãotrue
paraisInvalidated
, mas a reexecução da query que forneceuoldObject
retornará novamente o objeto válido.Os observadores da KVO em qualquer objeto que foram modificados durante a transação serão notificados sobre a alteração de volta aos seus valores iniciais, mas nenhuma outra notificação será produzida por uma transação de escrita cancelada.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Swift
public func cancelWrite()
-
Indica se o Realm está atualmente em uma transação de escrita.
Aviso
Não basta verificar esta propriedade e, em seguida, iniciar uma transação de escrita sempre que um objeto precisar ser criado, atualizado ou removido. Isso pode fazer com que um grande número de transação de escrita seja criada, degradando o desempenho. Em vez disso, prefira sempre realizar várias atualizações durante uma única transação.Declaração
Swift
public var isInWriteTransaction: Bool { get }
-
O que fazer quando um objeto adicionado ou criado em um Realm tiver uma chave primária que já existe.
Veja maisDeclaração
Swift
@frozen public enum UpdatePolicy : Int
-
Adiciona um objeto não gerenciado a este Realm.
Se um objeto com a mesma chave primária já existir neste Realm, ele será atualizado com os valores de propriedade deste objeto conforme especificado pelo
UpdatePolicy
selecionado. A política de atualização deve ser.error
para objetos sem chave primária.Adicionar um objeto a um Realm também adicionará todos os relacionamentos filhos referenciados por esse objeto (por meio das propriedades
Object
eList<Object>
). Esses objetos também devem ser objetos válidos para adicionar a esse Realm, e o valor do parâmetroupdate:
é propagado para esses adicionais.O objeto a ser adicionado deve ser um objeto não managed ou um objeto válido que já seja managed por este Realm. Adicionar um objeto já gerenciado por este Realm é um no-op, enquanto adicionar um objeto que é gerenciado por outro Realm ou que foi excluído de qualquer Realm (ou seja, um onde
isInvalidated
étrue
) é um erro.Para copiar um managed objeto de um Realm para outro, use
create()
em vez disso.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
public func add(_ object: Object, update: UpdatePolicy = .error)
Parâmetros
object
O objeto a ser adicionado a este Realm.
update
O que fazer se já existir um objeto com a mesma chave primária . Deve ser
.error
para objetos sem uma chave primária. -
Adiciona todos os objeto de uma collection ao Realm.
Veja
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
public func add<S>(_ objects: S, update: UpdatePolicy = .error) where S : Sequence, S.Element : Object
Parâmetros
objects
Uma sequência que contém objetos a serem adicionados ao Realm.
update
Como lidar com objetos na coleção com uma chave primária que já existe neste Realm. Deve ser
.error
para tipos de objeto sem chave primária.update
Como lidar com objetos na coleção com uma chave primária que já existe neste Realm. Deve ser
.error
para tipos de objeto sem chave primária. -
Cria um Objeto de Realm com um determinado valor, adicionando-o ao Realm e retornando-o.
O argumento
value
pode ser um Objeto de Realm, um objeto compatível com codificação de valor-chave, uma array ou dicionário retornado dos métodos emNSJSONSerialization
ou umArray
contendo um elemento para cada propriedade managed. Não passe em uma instânciaLinkingObjects
, por si só ou como membro de uma collection. Se o argumentovalue
for uma array, todas as propriedades deverão estar presentes, válidas e na mesma ordem que as propriedades definidas no modelo.Se o tipo de objeto não tiver uma chave primária ou não existir nenhum objeto com a chave primária especificada, um novo objeto será criado no Realm. Se um objeto já existir no Realm com a chave primária especificada e a política de atualização for
.modified
ou.all
, o objeto existente será atualizado e uma referência a esse objeto será retornada.Se o objeto estiver sendo atualizado, todas as propriedades definidas em seu esquema serão definidas copiando do
value
usando codificação de valor-chave. Se o argumentovalue
não responder avalue(forKey:)
para um determinado nome de propriedade (ou nome de getter, se definido), esse valor permanecerá intocado. As propriedades anuláveis no objeto podem ser definidas como nulo usandoNSNull
como o valor atualizado ou (se você estiver passando em uma instância de uma subclasseObject
) definindo a propriedade correspondente emvalue
como nulo.Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
@discardableResult public func create<T>(_ type: T.Type, value: Any = [:], update: UpdatePolicy = .error) -> T where T : Object
Parâmetros
type
O tipo do objeto a ser criado.
value
O valor utilizado para preencher o objeto.
update
O que fazer se já existir um objeto com a mesma chave primária . Deve ser
.error
para tipos de objeto sem chave primária.Valor de retorno
O objeto recém-criado.
-
Exclui um objeto do Realm. Depois que o objeto é excluído, ele é considerado invalidado.
Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
public func delete(_ object: ObjectBase)
Parâmetros
object
O objeto a ser excluído.
-
Exclui zero ou mais objetos do Realm.
Não passe uma fatia para um
Results
ou para qualquer outro tipo de collection de Realm de atualização automática (por exemplo, o tipo retornado pelo método da biblioteca padrão Swiftsuffix(_:)
). Em vez disso, faça uma cópia dos objetos a serem excluídos usandoArray()
e passe isso. Passar diretamente uma visualização para uma collection de atualização automática pode resultar na geração de exceções de "índice fora dos limites".Aviso
Este método só pode ser chamado durante uma transação de escrita.
Declaração
Swift
public func delete<S>(_ objects: S) where S : Sequence, S.Element : ObjectBase
Parâmetros
objects
Os objetos a serem excluídos. Pode ser um
List<Object>
,Results<Object>
ou qualquer outro SwiftSequence
cujos elementos sejamObject
s (sujeito às ressalvas acima). -
Exclui todos os objetos do Realm.
Aviso
Este método só pode ser chamado durante uma transação de escrita.Declaração
Swift
public func deleteAll()
-
Retorna todos os objetos do tipo fornecido armazenados no Realm.
Declaração
Parâmetros
type
O tipo dos objetos a serem retornados.
Valor de retorno
Um
Results
contendo os objetos. -
Recupera a instância única de um determinado Tipo de objeto de Realm com a chave primária fornecida do Realm.
Este método requer que
primaryKey()
seja substituído na classe de objeto fornecida.Veja
Object.primaryKey()
Declaração
Swift
public func object<Element, KeyType>(ofType type: Element.Type, forPrimaryKey key: KeyType) -> Element? where Element : Object
Parâmetros
type
O tipo do objeto a ser retornado.
key
A chave primária do objeto desejado.
Valor de retorno
Um objeto do tipo
type
ounil
se não existir nenhuma instância com a chave primária fornecida.
-
Adiciona um manipulador de notificações para alterações feitas nesse Realm e retorna um token de notificação.
Os manipuladores de notificações são chamados após cada transação de escrita ser confirmada, independentemente do thread ou processo.
Os blocos manipuladores são chamados no mesmo thread em que foram adicionados e só podem ser adicionados em threads que estejam atualmente dentro de um loop de eventos. A menos que você esteja criando e executando especificamente um loop de eventos em um thread em segundo plano, esse normalmente será apenas o thread principal.
As notificações não podem ser entregues enquanto o loop de eventos estiver bloqueado por outra atividade. Quando as notificações não podem ser entregues instantaneamente, várias notificações podem ser agrupadas.
Você deve reter o token retornado pelo tempo que desejar que as atualizações sejam enviadas ao bloco. Para parar de receber atualizações, ligue para
invalidate()
no token.Declaração
Swift
public func observe(_ block: @escaping NotificationBlock) -> NotificationToken
Parâmetros
block
Um bloco chamado para processar as notificações do Realm. Ela recebe os seguintes parâmetros:
notification
: a notificação recebida;realm
: o Realm para o qual ocorreu a notificação.Valor de retorno
Um token que deve ser mantido enquanto você desejar continuar recebendo notificações de alteração.
-
Defina esta propriedade como
true
para atualizar automaticamente este Realm quando as alterações acontecerem em outros segmentos.Se definido como
true
(o padrão), as alterações feitas em outras threads serão refletidas nesse Realm no próximo ciclo do loop de eventos após as alterações serem confirmadas. Se definido comofalse
, você deverá chamar manualmenterefresh()
no Realm para atualizá-lo e obter os dados mais recentes.Observe que, por padrão, os threads em segundo plano não têm um loop de eventos ativo e você precisará chamar manualmente
refresh()
para atualizar para a versão mais recente, mesmo queautorefresh
esteja definido comotrue
.Mesmo com esta propriedade habilitada, você ainda pode chamar o
refresh()
a qualquer momento para atualizar o Realm antes que a atualização automática ocorra.As notificações são enviadas quando uma transação de escrita é confirmada se a atualização automática está habilitada ou não.
Desativar
autorefresh
em umRealm
sem referências fortes a ele não terá nenhum efeito, eautorefresh
será revertido paratrue
na próxima vez que o Realm for criado. Normalmente, isso é irrelevante, pois significa que não há nada para atualizar (já queObject
s,List
s managed eResults
têm referências fortes para oRealm
que os managed), mas significa que a configuraçãoautorefresh = false
emapplication(_:didFinishLaunchingWithOptions:)
e somente mais tarde o armazenamento de objeto de Realm não funcionará.Padrão é
true
.Declaração
Swift
public var autorefresh: Bool { get nonmutating set }
-
Atualiza o Realm e os objeto managed pelo Realm para ponto para os dados mais recentes.
Declaração
Swift
@discardableResult public func refresh() -> Bool
Valor de retorno
Se houve atualizações para o Realm. Observe que
true
pode ser retornado mesmo que nenhum dado seja realmente alterado.
-
Retorna se este Realm estiver congelado.
Declaração
Swift
public var isFrozen: Bool { get }
-
Retorna um snapshot congelado (imutável) deste Realm.
Um Realm congelado é uma visualização de snapshot imutável de uma versão específica dos dados de um Realm. Ao contrário das Instância de Realm, ele não é atualizado ao vivo para refletir as gravações feitas no Realm e pode ser acessado a partir de qualquer thread. Não é permitido gravar em um Realm congelado, e tentar iniciar uma transação de escrita lançará uma exceção.
Todos os objeto e collection lidos de um Realm congelado também serão congelados.
Aviso
Manter um Realm congelado por um longo período enquanto executa a transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. ConsulteRealm.Configuration.maximumNumberOfActiveVersions
para obter mais informações.Declaração
Swift
public func freeze() -> Realm
-
Retorna uma referência ativa (mutável) deste Realm.
Todos os objeto e collection lidos da referência do Realm retornada não serão mais congelados. Retornará a si mesmo se for chamado em um Realm que ainda não esteja congelado.
Declaração
Swift
public func thaw() -> Realm
-
Retorna um snapshot congelado (imutável) do objeto fornecido.
A cópia congelada é um objeto imutável que contém os mesmos dados que o objeto fornecido atualmente, mas não será atualizado quando forem feitas gravações no Realm que a contém. Ao contrário dos objetos ativos, os objetos congelados podem ser acessados de qualquer thread.
Aviso
Manter um objeto congelado por um longo período enquanto executa a transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. ConsulteRealm.Configuration.maximumNumberOfActiveVersions
para obter mais informações.Declaração
Swift
public func freeze<T>(_ obj: T) -> T where T : ObjectBase
-
Retorna uma referência ativa (mutável) deste objeto.
Esse método cria um acessador gerenciado para uma cópia ativa do mesmo objeto congelado. Retornará a si mesmo se for chamado em um objeto já ativo.
Declaração
Swift
public func thaw<T>(_ obj: T) -> T? where T : ObjectBase
-
Retorna um snapshot congelado (imutável) da collection fornecida.
A cópia congelada é uma collection imutável que contém os mesmos dados que a collection fornecida atualmente, mas não será atualizada quando forem feitas gravações no Realm que a contém. Ao contrário da collection ativa, a collection congelada pode ser acessada de qualquer thread.
Aviso
Este método não pode ser chamado durante uma transação de gravação ou quando o Realm for somente leitura.Aviso
Manter uma collection congelada por um longo período enquanto executa transação de escrita no Realm pode fazer com que o Arquivo de Realm cresça para tamanhos grandes. ConsulteRealm.Configuration.maximumNumberOfActiveVersions
para obter mais informações.Declaração
Swift
public func freeze<Collection>(_ collection: Collection) -> Collection where Collection : RealmCollection
-
Invalida todos os
Object
s,Results
,LinkingObjects
eList
s managed pelo Realm.Um Realm mantém um bloqueio de leitura na versão dos dados acessados por ele, de modo que as alterações feitas no Realm em diferentes threads não modifiquem ou excluam os dados vistos por este Realm. A chamada desse método libera o bloqueio de leitura, permitindo que o espaço usado no disco seja reutilizado por transação de escrita posterior, em vez de aumentar o arquivo. Esse método deve ser chamado antes de executar operações de bloqueio longas em um thread em segundo plano no qual você leu anteriormente dados do Realm que não são mais necessários.
Todas as instâncias
Object
,Results
eList
obtidas desta instânciaRealm
na thread atual são invalidadas.Object
s eArray
s não podem ser usados.Results
ficará vazio. O próprio Realm permanece válido e uma nova transação de leitura é implicitamente iniciada na próxima vez que os dados forem lidos do Realm.Chamar esse método várias vezes seguidas sem ler nenhum dado do Realm, ou antes de ler qualquer dado do Realm, é um modo autônomo.
Declaração
Swift
public func invalidate()
-
Grava uma cópia compactada e opcionalmente criptografada do Realm na URL local fornecida.
O arquivo de destino já não pode existir.
Observe que, se esse método for chamado de dentro de uma transação de gravação, os dados atuais serão gravados, não os dados do ponto em que a transação de escrita anterior foi confirmada.
Lança
Um
NSError
se a cópia não puder ser escrita.Declaração
Swift
public func writeCopy(toFile fileURL: URL, encryptionKey: Data? = nil) throws
Parâmetros
fileURL
URL local na qual salvar o Realm.
encryptionKey
Chave de criptografia opcional de 64 bytes para criptografar o novo arquivo.
-
Verifica se o arquivo de Realm para a configuração fornecida existe localmente no disco.
Para Realms não sincronizados e não na memória, isso é equivalente a
FileManager.default.fileExists(atPath:)
. Para Realms sincronizados, ele se encarrega de calcular o caminho real no disco com base no servidor, no caminho virtual e no usuário, como é feito ao abrir o Realm.@param config Uma configuração do Realm para verificar a existência. @return true se o Arquivo de Realm para a configuração fornecida existir no disco, false caso contrário.
Declaração
Swift
public static func fileExists(for config: Configuration) -> Bool
-
Exclui o Arquivo de Realm local e os arquivos temporários associados à configuração fornecida.
Isso exclui os arquivos ".realm", ".note" e ".management" que seriam criados ao abrir o Realm com a configuração fornecida. Ele não exclui o arquivo de bloqueio (que não contém dados persistentes e é recriado do zero toda vez que o Arquivo de Realm é aberto).
O Realm não deve estar atualmente aberto em nenhum thread ou em outro processo. Se estiver, isso gerará o erro .alreadyOpen. A tentativa de abrir o Realm em outro thread enquanto a exclusão está ocorrendo bloqueará e, em seguida, criará um novo Realm e o abrirá posteriormente.
Se o Realm ainda não existir, isso retornará
false
.@param config Uma configuração de Realm que identifica o Realm a ser excluído. @return true se algum arquivo foi excluído, false caso contrário.
Declaração
Swift
public static func deleteFiles(for config: Configuration) throws -> Bool
-
Um editor que emite um cancelamento toda vez que o objeto muda.
Apesar do nome, isso na verdade é emitido após a mudança da collection.
Declaração
Swift
public var objectWillChange: RealmPublishers.RealmWillChange { get }
-
Estrutura que descreve os códigos de erro no domínio de erro do Realm. Os valores podem ser usados para detectar uma variedade de erros recuperáveis , especialmente aqueles que ocorrem ao inicializar uma instância do Realm.
Veja maislet realm: Realm? do { realm = try Realm() } catch Realm.Error.incompatibleLockFile { print("Realm Browser app may be attached to Realm on device?") }
Declaração
-
Executa o bloco de migração da configuração do Realm fornecido em um Realm no caminho fornecido.
Este método é chamado automaticamente ao abrir um Realm pela primeira vez e não precisa ser chamado explicitamente. Você pode optar por chamar esse método para controlar exatamente quando e como as migrações são realizadas.
Declaração
Swift
public static func performMigration(for configuration: Realm.Configuration = Realm.Configuration.defaultConfiguration) throws
Parâmetros
configuration
A configuração do Realm costumava abrir e migrar o Realm.
-
Retorna se duas instâncias
Realm
são iguais.Declaração
Swift
public static func == (lhs: Realm, rhs: Realm) -> Bool
-
Uma notificação indicando que as alterações foram feitas em um Realm.
Veja maisDeclaração
Swift
@frozen public enum Notification : String
-
Uma instância
Configuration
descreve as diferentes opções usadas para criar uma instância de um Realm.Configuration
instâncias são estruturas Swift simples. Ao contrário deRealm
s eObject
s, eles podem ser compartilhados livremente entre threads, desde que você não os altere.Criar valores de configuração para subconjuntos de classe (definindo a propriedade
Veja maisobjectClasses
) pode ser caro. Por esse motivo, normalmente você desejará armazenar em cache e reutilizar um único valor de configuração para cada configuração distinta, em vez de criar um novo valor sempre que abrir um Realm.Declaração
-
Obtenha a SyncSession usada por este Realm. Não terá valor se este não for um Realm sincronizado.
Declaração
Swift
public var syncSession: SyncSession? { get }
-
Retorna o mesmo objeto que o referenciado quando o
ThreadSafeReference
foi criado pela primeira vez, mas resolvido para o Realm atual para este thread. Retornanil
se este objeto foi excluído depois que a referência foi criada.Aviso
Um objeto
ThreadSafeReference
deve ser resolvido no máximo uma vez. A não resolução de umThreadSafeReference
fará com que a versão de origem do Realm seja fixada até que a referência seja desalocada. Uma exceção será lançada se uma referência for resolvida mais de uma vez.Aviso
Não é possível chamar dentro de uma transação de escrita.
Observação
Atualizará este Realm se o Realm de origem estiver em uma versão posterior a esta.
Veja
ThreadSafeReference(to:)
Declaração
Swift
public func resolve<Confined>(_ reference: ThreadSafeReference<Confined>) -> Confined? where Confined : ThreadConfined
Parâmetros
reference
A referência segura de thread para o objeto confinado a thread para resolver neste Realm.