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!_**