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.

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.

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 Realm de construção requer Xcode 15.3 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!