Sobre o projeto
# Sobre o Realm Database
O Realm é um banco de dados móvel que é executado diretamente em telefones, tablets ou wearables. Este repositório contém o código-fonte das versões para iOS, macOS, tvOS e watchOS do Realm Swift e do Realm Objective-C.
## Por que usar o Realm
* **Intuitivo para desenvolvedores:** O modelo de dados orientado a objetos do Realm é simples de aprender, não precisa de um ORM e permite escrever menos código.
* **Feito para mobile:** O Realm é completo, leve e usa memória, espaço em disco e bateria de forma eficiente.
* **Projetado para uso offline:** O banco de dados local do Realm persiste os dados em disco, então os apps funcionam tão bem offline quanto online.
## Orientado a objetos: simplifique seu código
O Realm foi criado para desenvolvedores mobile, com simplicidade em mente. O modelo de dados idiomático e orientado a objetos pode economizar milhares de linhas de código.
```swift
// Defina seus modelos como classes Swift comuns
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
// Crie relacionamentos apontando um campo Object para outra Classe
@Persisted var dogs: List<Dog>
}
// Use-os como objetos Swift comuns
let dog = Dog()
dog.name = "Rex"
dog.age = 1
print("name of dog: \(dog.name)")
// Obtenha o Realm padrão
let realm = try! Realm()
// Persista seus dados facilmente com uma transação de escrita
try! realm.write {
realm.add(dog)
}
```
## Objetos vivos: crie apps reativos
Os objetos vivos do Realm significam que dados atualizados em qualquer lugar são atualizados automaticamente em todos os lugares.
```swift
// Abra o realm padrão.
let realm = try! Realm()
var token: NotificationToken?
let dog = Dog()
dog.name = "Max"
// Crie um cachorro no realm.
try! realm.write {
realm.add(dog)
}
// Configure o listener e observe as notificações do objeto.
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.")
}
}
// Atualize o nome do cachorro para ver o efeito.
try! realm.write {
dog.name = "Wolfie"
}
```
### SwiftUI
O Realm se integra diretamente ao SwiftUI, atualizando suas views para que você não precise fazer isso.
```swift
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 em trânsito e em repouso, mantendo seguros até os dados mais sensíveis.
```swift
// Gere uma chave de criptografia aleatória
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)
}
// Adicione a chave de criptografia à configuração e abra o realm
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)
// Use o Realm normalmente
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")
```
## Primeiros passos
Oferecemos suporte à instalação do Realm via Swift Package Manager, CocoaPods, Carthage ou importando um XCFramework dinâmico.
Para mais informações, consulte nosso [Quick Start](docs/guides/quick-start.md).
## Documentação
A documentação pode ser encontrada no diretório [docs/](docs/README.md).
A referência da API pode ser gerada a partir do código-fonte usando [jazzy](https://github.com/realm/jazzy/) executando `sh build.sh docs` na raiz deste repositório.
## Obtendo ajuda
- **Precisa de ajuda com seu código?**: Procure perguntas anteriores com a [tag `realm`](https://stackoverflow.com/questions/tagged/realm?sort=newest) no Stack Overflow ou [faça uma nova pergunta](https://stackoverflow.com/questions/ask?tags=realm). Para discussões gerais que possam ser consideradas amplas demais para o Stack Overflow, use o [Fórum da Comunidade](https://developer.mongodb.com/community/forums/tags/c/realm-sdks/58/swift/).
- **Tem um bug para relatar?** [Abra uma issue no GitHub](https://github.com/realm/realm-swift/issues/new). Se possível, inclua a versão do Realm, um log completo, o arquivo do Realm e um projeto que mostre o problema.
- **Tem uma solicitação de recurso?** [Abra uma issue no GitHub](https://github.com/realm/realm-swift/issues/new). Diga o que o recurso deve fazer e por que você o deseja.
## Compilando o Realm
Caso você não queira usar a versão pré-compilada, pode compilar o Realm a partir do código-fonte.
Pré-requisitos:
* Compilar o Realm requer Xcode 15.3 ou mais recente.
* Compilar a documentação do Realm requer [jazzy](https://github.com/realm/jazzy)
Depois de ter todos os pré-requisitos necessários, compilar o Realm leva apenas um único comando: `sh build.sh build`. Você precisará de uma conexão com a internet na primeira vez que compilar 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 todas as ações que você pode realizar (build ios/osx, gerar docs, testar, etc.).
## Contribuindo
Consulte [CONTRIBUTING.md](CONTRIBUTING.md) para mais detalhes!
## Código de Conduta
Este projeto adere ao [MongoDB Code of Conduct](https://www.mongodb.com/community-code-of-conduct). Ao participar, espera-se que você siga este código. Por favor, reporte comportamentos inaceitáveis para [community-conduct@mongodb.com](mailto:community-conduct@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](https://github.com/realm/realm-core).
## Feedback
**_Se você usa o Realm e está satisfeito com ele, considere enviar um tweet mencionando [@realm](https://twitter.com/realm) para compartilhar sua opinião!_**
**_E se você não gostou, por favor nos diga o que você gostaria que fosse melhorado, para que possamos corrigir!_**
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.