[!WARNING] Anunciamos a descontinuação do Atlas Device Sync + Realm SDKs em 2024 de setembro . Para mais informações, consulte:

Para uma versão do realm-swift sem recursos de sincronização, instale a versão 20 ou consulte a ramificação community .

Realm por MongoDB

Sobre o reconhecimento de data center Realm

O Realm é um banco de dados móvel que é executado diretamente dentro de telefone, tablete ou dispositivo móvel. Este repositório contém o código-fonte para as versões iOS, macOS, tvOS e watchOS do Realm Swift e Realm Objective-C.

Por que usar o Realm

  • Intuitivo para desenvolvedores: o Modelo de dados Realm orientado a objeto é simples de aprender, não precisa de um ORM e permite que você escreva menos código.
  • Construído para dispositivos móveis: o Realm é completo, leve e usa de forma eficiente a memória, o espaço em disco e a duração da bateria.
  • Projetado para uso offline: o reconhecimento de data center local do Realm mantém os dados no disco, para que os aplicativos funcionem tão bem offline quanto online.
  • MongoDB Atlas Device Sync: simplifica a sincronização de dados entre usuários, dispositivos e backend em tempo real. Comece gratuitamente com uma aplicação de modelo e crie o backend de cloud.

Orientado a objetos: simplificar seu código

O Realm foi criado para desenvolvedores móveis, com simplicidade em mente. O Modelo de dados Realm idiomático e orientado a objeto pode economizar milhares de linhas de código.

// Define your models like regular Swift classes
class Dog: Object {
    @Persisted var name: String
    @Persisted var age: Int
}
class Person: Object {
    @Persisted(primaryKey: true) var _id: String
    @Persisted var name: String
    @Persisted var age: Int
    // Create relationships by pointing an Object field to another Class
    @Persisted var dogs: List<Dog>
}
// Use them like regular Swift objects
let dog = Dog()
dog.name = "Rex"
dog.age = 1
print("name of dog: \(dog.name)")

// Get the default Realm
let realm = try! Realm()
// Persist your data easily with a write transaction
try! realm.write {
    realm.add(dog)
}

objeto ativos: criar aplicativos reativos

Os objeto ativos do Realm média que os dados atualizados em qualquer lugar são atualizados automaticamente em todos os lugares.

// Open the default realm.
let realm = try! Realm()

var token: NotificationToken?

let dog = Dog()
dog.name = "Max"

// Create a dog in the realm.
try! realm.write {
    realm.add(dog)
}

//  Set up the listener & observe object notifications.
token = dog.observe { change in
    switch change {
    case .change(let properties):
        for property in properties {
            print("Property '\(property.name)' changed to '\(property.newValue!)'");
        }
    case .error(let error):
        print("An error occurred: (error)")
    case .deleted:
        print("The object was deleted.")
    }
}

// Update the dog's name to see the effect.
try! realm.write {
    dog.name = "Wolfie"
}

SwiftUI

O Realm se integra diretamente ao SwiftUI, atualizando suas visualizações para que você não precise fazer isso.

struct ContactsView: View {
    @ObservedResults(Person.self) var persons

    var body: some View {
        List {
            ForEach(persons) { person in
                Text(person.name)
            }
            .onMove(perform: $persons.move)
            .onDelete(perform: $persons.remove)
        }.navigationBarItems(trailing:
            Button("Add") {
                $persons.append(Person())
            }
        )
    }
}

Totalmente criptografado

Os dados podem ser criptografados a bordo e em repouso, mantendo até os dados mais confidenciais seguros.

// Generate a random encryption key
var key = Data(count: 64)
_ = key.withUnsafeMutableBytes { (pointer: UnsafeMutableRawBufferPointer) in
    guard let baseAddress = pointer.baseAddress else {
        fatalError("Failed to obtain base address")
    }
    SecRandomCopyBytes(kSecRandomDefault, 64, baseAddress)
}

// Add the encryption key to the config and open the realm
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)

// Use the Realm as normal
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")

Começar

Suportamos a instalação do Realm via Swift pacote Manager, CocoaPods, Carthage ou importando um Xcframework dinâmico.

Para obter mais informações, consulte as instruções detalhadas em nossos Docs.

Interessado em começar gratuitamente com uma aplicação de modelo que inclui um backend de cloud e sincronização? Crie uma conta no MongoDB Atlas.

Documentação

A documentação pode ser encontrada em mongodb.com/pt-br/docs/atlas/device-sdks/sdk/swift/. A referência da API está localizada em mongodb.com/pt-br/docs/realm-sdks/swift/latest/

Obtendo ajuda

  • Precisa de ajuda com seu código?: Procure perguntas anteriores com amarcaçãorealm no Stack Overflow ou faça uma nova pergunta. Para uma discussão geral que pode ser considerada muito ampla para o Stack Overflow, use o Community Federation.
  • Tem um bug para relatar? Abra um item do Github. Se possível, inclua a versão do Realm, um registro completo, o Arquivo de Realm e um projeto que mostre o problema.
  • Tem uma solicitação de funcionalidade? Abra um item do Github. Diga-nos o que a funcionalidade deve fazer e por que você deseja a funcionalidade.

Construindo o Realm

Caso não queira usar a versão pré-compilada, você mesmo pode construir o Realm a partir da origem.

Pré-requisitos:

  • O Build Realm requer o Xcode 14.1 ou mais recente.
  • A construção da documentação do Realm requer joalheiro

Depois de ter todos os pré-requisitos necessários, a construção do Realm basta um único comando: sh build.sh build. Você precisará de uma conexão com a Internet na primeira vez que construir o Realm para baixar o binário principal. Isso produzirá Realm.xcframework e RealmSwift.xcframework em build/Release/.

Execute sh build.sh help para ver toda a ação que você pode executar (compilar iOS/osx, gerar Docs, testar etc.).

Contribuindo

Consulte CONTRIBUTING.md para obter mais detalhes!

Código de Conduta

Este projeto está em conformidade com o Código de conduta do MongoDB. Ao participar, espera-se que você mantenha este código. Relate comportamento inaceitável para Community-condure@mongodb.com.

Licença

Realm Objective-C e Realm Swift são publicados sob a licença Apache 2.0 . O Realm Core também é publicado sob a licença Apache 2.0 e está disponível aqui.

Feedback

Se você usa o Realm e está satisfeito com ele, considere enviar um tuíte mencionando @realm para compartilhar suas ideias!

E se você não gostaria, por favor, deixe-nos saber o que você gostaria de melhorar, para que possamos corrigir!