Sobre el proyecto
# Acerca de Realm Database
Realm es una base de datos móvil que se ejecuta directamente dentro de teléfonos, tabletas o dispositivos portátiles. Este repositorio contiene el código fuente de las versiones para iOS, macOS, tvOS y watchOS de Realm Swift y Realm Objective-C.
## Por qué usar Realm
* **Intuitivo para los desarrolladores:** El modelo de datos orientado a objetos de Realm es fácil de aprender, no necesita un ORM y te permite escribir menos código.
* **Diseñado para móviles:** Realm es completo, ligero y utiliza eficientemente la memoria, el espacio en disco y la batería.
* **Diseñado para uso sin conexión:** La base de datos local de Realm persiste los datos en disco, por lo que las aplicaciones funcionan igual de bien sin conexión como en línea.
## Orientado a objetos: simplifica tu código
Realm fue creado para desarrolladores móviles, con la simplicidad en mente. El modelo de datos idiomático y orientado a objetos puede ahorrarte miles de líneas de código.
```swift
// Define tus modelos como clases Swift normales
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
// Crea relaciones apuntando un campo Object a otra clase
@Persisted var dogs: List<Dog>
}
// Úsalos como objetos Swift normales
let dog = Dog()
dog.name = "Rex"
dog.age = 1
print("name of dog: \(dog.name)")
// Obtén el Realm predeterminado
let realm = try! Realm()
// Persiste tus datos fácilmente con una transacción de escritura
try! realm.write {
realm.add(dog)
}
```
## Objetos en vivo: crea aplicaciones reactivas
Los objetos en vivo de Realm hacen que los datos actualizados en cualquier lugar se actualicen automáticamente en todas partes.
```swift
// Abre el realm predeterminado.
let realm = try! Realm()
var token: NotificationToken?
let dog = Dog()
dog.name = "Max"
// Crea un perro en el realm.
try! realm.write {
realm.add(dog)
}
// Configura el listener y observa las notificaciones del 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.")
}
}
// Actualiza el nombre del perro para ver el efecto.
try! realm.write {
dog.name = "Wolfie"
}
```
### SwiftUI
Realm se integra directamente con SwiftUI, actualizando tus vistas para que no tengas que hacerlo tú.
```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 cifrado
Los datos se pueden cifrar en tránsito y en reposo, manteniendo seguros incluso los datos más sensibles.
```swift
// Genera una clave de cifrado aleatoria
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)
}
// Agrega la clave de cifrado a la configuración y abre el realm
let config = Realm.Configuration(encryptionKey: key)
let realm = try Realm(configuration: config)
// Usa el Realm como de costumbre
let dogs = realm.objects(Dog.self).filter("name contains 'Fido'")
```
## Primeros pasos
Admitimos la instalación de Realm mediante Swift Package Manager, CocoaPods, Carthage o importando un XCFramework dinámico.
Para obtener más información, consulta nuestra [Guía de inicio rápido](docs/guides/quick-start.md).
## Documentación
La documentación se encuentra en el directorio [docs/](docs/README.md).
La referencia de la API se puede generar desde el código fuente usando [jazzy](https://github.com/realm/jazzy/) ejecutando `sh build.sh docs` desde la raíz de este repositorio.
## Obtener ayuda
- **¿Necesitas ayuda con tu código?**: Busca preguntas anteriores con la [etiqueta `realm`](https://stackoverflow.com/questions/tagged/realm?sort=newest) en Stack Overflow o [haz una nueva pregunta](https://stackoverflow.com/questions/ask?tags=realm). Para discusiones generales que podrían considerarse demasiado amplias para Stack Overflow, usa el [Foro de la comunidad](https://developer.mongodb.com/community/forums/tags/c/realm-sdks/58/swift/).
- **¿Tienes un error que reportar?** [Abre un issue en GitHub](https://github.com/realm/realm-swift/issues/new). Si es posible, incluye la versión de Realm, un registro completo, el archivo de Realm y un proyecto que muestre el problema.
- **¿Tienes una solicitud de función?** [Abre un issue en GitHub](https://github.com/realm/realm-swift/issues/new). Cuéntanos qué debería hacer la función y por qué la quieres.
## Compilar Realm
En caso de que no quieras usar la versión precompilada, puedes compilar Realm tú mismo desde el código fuente.
Requisitos previos:
* Compilar Realm requiere Xcode 15.3 o posterior.
* Compilar la documentación de Realm requiere [jazzy](https://github.com/realm/jazzy)
Una vez que tengas todos los requisitos previos necesarios, compilar Realm solo requiere un único comando: `sh build.sh build`. Necesitarás una conexión a internet la primera vez que compiles Realm para descargar el binario principal. Esto producirá Realm.xcframework y RealmSwift.xcframework en `build/Release/`.
Ejecuta `sh build.sh help` para ver todas las acciones que puedes realizar (compilar ios/osx, generar documentación, probar, etc.).
## Contribuir
¡Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para obtener más detalles!
## Código de conducta
Este proyecto se adhiere al [Código de conducta de MongoDB](https://www.mongodb.com/community-code-of-conduct). Al participar, se espera que cumplas con este código. Informa cualquier comportamiento inaceptable a [community-conduct@mongodb.com](mailto:community-conduct@mongodb.com).
## Licencia
Realm Objective-C y Realm Swift se publican bajo la licencia Apache 2.0. Realm Core también se publica bajo la licencia Apache 2.0 y está disponible [aquí](https://github.com/realm/realm-core).
## Comentarios
**_Si usas Realm y estás satisfecho con él, ¡considera enviar un tuit mencionando a [@realm](https://twitter.com/realm) para compartir tus opiniones!_**
**_Y si no te gusta, ¡cuéntanos qué te gustaría mejorar para que podamos solucionarlo!_**
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.