¿Qué es Realm y para qué sirve?
\n\nRealm es una base de datos móvil, creada como alternativa a Core Data y SQLite. A diferencia de las bases de datos relacionales tradicionales, Realm funciona como un almacenamiento orientado a objetos: trabajas con objetos nativos de Swift, no con consultas SQL o NSManagedObject. Realm almacena datos en su propio formato, lo que proporciona una velocidad de funcionamiento cercana a la de la memoria RAM.
\n\nPrincipales ventajas de Realm:
\n- \n
- Velocidad: Realm funciona de 10 a 100 veces más rápido que SQLite en dispositivos móviles. \n
- Simplicidad: Trabajas con objetos Swift normales, heredándolos de Realm.Object. \n
- Actualización automática: Los resultados de las consultas (Results) se actualizan automáticamente cuando los datos cambian. \n
- Objetos en vivo: Los objetos de Realm se sincronizan automáticamente con la base de datos. \n
- Multiplataforma: Realm funciona en iOS, macOS, tvOS y watchOS. \n
Realm es ideal para aplicaciones que requieren acceso rápido a datos en el dispositivo: listas de tareas, mensajería, almacenamiento en caché de datos de red, aplicaciones de notas y muchas otras.
\n\nInstalación de Realm en Swift
\n\nRealm para Swift se instala a través de Swift Package Manager (SPM), CocoaPods o Carthage. Veamos las dos formas más populares.
\n\nInstalación a través de Swift Package Manager (recomendado)
\n- \n
- En Xcode abre tu proyecto:
File → Add Packages...\n - Pega la URL:
https://github.com/realm/realm-swift.git\n - Selecciona la versión (se recomienda la última estable) y haz clic en
Add Package. \n - En la ventana que aparece, selecciona el paquete
RealmyRealmSwiftpara tu compilación objetivo. \n
Instalación a través de CocoaPods
\nAñade al Podfile:
\ntarget 'YourApp' do\n use_frameworks!\n pod 'RealmSwift'\nend\nLuego ejecuta en la terminal:
\npod install\n\nImportación en el código
\nimport RealmSwift\n\nInicio rápido: primer modelo y escritura de datos
\n\nCreemos un modelo de tarea simple y guardémoslo en la base de datos.
\n\nimport RealmSwift\n\n// 1. Definimos el modelo\nclass Task: Object {\n @Persisted var id: String = UUID().uuidString\n @Persisted var title: String = ""\n @Persisted var isCompleted: Bool = false\n @Persisted var createdAt: Date = Date()\n \n // Clave primaria (opcional, pero recomendada)\n override static func primaryKey() -> String? {\n return "id"\n }\n}\n\n// 2. Guardamos el objeto\nlet task = Task()\ntask.title = "Comprar víveres"\ntask.isCompleted = false\n\nlet realm = try! Realm()\ntry! realm.write {\n realm.add(task)\n}\n\n// 3. Leemos todas las tareas\nlet tasks = realm.objects(Task.self)\nfor task in tasks {\n print("\\(task.title) - \\(task.isCompleted ? "Completada" : "No completada")")\n}\n\nMétodos y funciones principales de Realm
\n\nA continuación se presentan los métodos clave para trabajar con Realm. Cada método va acompañado de una descripción, parámetros y un ejemplo funcional.
\n\n1. Realm() — Inicialización de la base de datos
\nQué hace: Crea o abre una base de datos Realm existente. Por defecto, el archivo de la base de datos se encuentra en el directorio Documents de la aplicación.
\nParámetros: configuration: Realm.Configuration? — configuración opcional (URL del archivo, esquema, versión de migración).
// Inicialización estándar\nlet realm = try! Realm()\n\n// Inicialización con URL personalizada\nlet config = Realm.Configuration(fileURL: FileManager.default\n .urls(for: .documentDirectory, in: .userDomainMask)\n .first?.appendingPathComponent("myrealm.realm"))\nlet customRealm = try! Realm(configuration: config)\n\n