Realm para Swift: guia completo com exemplos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

O que é Realm e para que serve?

\n\n

Realm é um banco de dados móvel, criado como alternativa ao Core Data e SQLite. Diferente dos bancos relacionais tradicionais, o Realm funciona como um armazenamento orientado a objetos: você trabalha com objetos nativos do Swift, e não com consultas SQL ou NSManagedObject. O Realm armazena dados em seu próprio formato, o que proporciona velocidade de operação próxima à da memória RAM.

\n\n

Principais vantagens do Realm:

\n
    \n
  • Velocidade: Realm é 10 a 100 vezes mais rápido que SQLite em dispositivos móveis.
  • \n
  • Simplicidade: Você trabalha com objetos Swift comuns, herdando de Realm.Object.
  • \n
  • Atualização automática: Os resultados das consultas (Results) são atualizados automaticamente quando os dados mudam.
  • \n
  • Objetos ao vivo: Os objetos do Realm são sincronizados automaticamente com o banco de dados.
  • \n
  • Multiplataforma: Realm funciona em iOS, macOS, tvOS e watchOS.
  • \n
\n\n

Realm é ideal para aplicativos que exigem acesso rápido a dados no dispositivo: listas de tarefas, mensageiros, cache de dados da rede, aplicativos de notas e muitos outros.

\n\n

Instalação do Realm no Swift

\n\n

O Realm para Swift é instalado via Swift Package Manager (SPM), CocoaPods ou Carthage. Vamos considerar as duas formas mais populares.

\n\n

Instalação via Swift Package Manager (recomendado)

\n
    \n
  1. No Xcode, abra o projeto: File → Add Packages...
  2. \n
  3. Insira a URL: https://github.com/realm/realm-swift.git
  4. \n
  5. Selecione a versão (recomenda-se a última estável) e clique em Add Package.
  6. \n
  7. Na janela que aparecer, selecione o pacote Realm e RealmSwift para o seu target de build.
  8. \n
\n\n

Instalação via CocoaPods

\n

Adicione ao Podfile:

\n
target 'YourApp' do\n  use_frameworks!\n  pod 'RealmSwift'\nend
\n

Em seguida, execute no terminal:

\n
pod install
\n\n

Importação no código

\n
import RealmSwift
\n\n

Início rápido: primeiro modelo e gravação de dados

\n\n

Vamos criar um modelo simples de tarefa e salvá-lo no banco de dados.

\n\n
import RealmSwift\n\n// 1. Definindo o modelo\nclass Task: Object {\n    @Persisted var id: String = UUID().uuidString\n    @Persisted var title: String = ""\n    @Persisted var isCompleted: Bool = false\n    @Persisted var createdAt: Date = Date()\n    \n    // Chave primária (opcional, mas recomendada)\n    override static func primaryKey() -> String? {\n        return "id"\n    }\n}\n\n// 2. Salvando o objeto\nlet task = Task()\ntask.title = "Comprar mantimentos"\ntask.isCompleted = false\n\nlet realm = try! Realm()\ntry! realm.write {\n    realm.add(task)\n}\n\n// 3. Lendo todas as tarefas\nlet tasks = realm.objects(Task.self)\nfor task in tasks {\n    print("\\(task.title) - \\(task.isCompleted ? "Concluída" : "Não concluída")")\n}
\n\n

Principais métodos e funções do Realm

\n\n

Abaixo estão os principais métodos para trabalhar com Realm. Cada método é acompanhado de descrição, parâmetros e um exemplo funcional.

\n\n

1. Realm() — Inicialização do banco de dados

\n

O que faz: Cria ou abre um banco de dados Realm existente. Por padrão, o arquivo do banco de dados está localizado no diretório Documents do aplicativo.

\n

Parâmetros: configuration: Realm.Configuration? — configuração opcional (URL do arquivo, esquema, versão de migração).

\n
// Inicialização padrão\nlet realm = try! Realm()\n\n// Inicialização com URL personalizada\nlet config = Realm.Configuration(fileURL: FileManager.default\n    .urls(for: .documentDirectory, in: .userDomainMask)\n    .first?.appendingPathComponent("myrealm.realm"))\nlet customRealm = try! Realm(configuration: config)
\n\n

2. realm.wr

Recommendations