Presentación de Realm. Un revolucionario sistema de bases de datos enfocado en mobile y que se plantea como la gran alternativa a sistemas como CoreData o SQLite
para poco almacenamiento, memoria y potencia de procesado. » La compresión no es una opción » Realm, empaquetado de bits inteligente, vectorización ARM, y layouts de tablas eficiente. » Lanzado para iOS en 2014
desarrolladores ya usándolo » Orientada a objetos & modelos » Modelo de threads bien definido (GCD) » Multi plataforma, core en C++ con bindings en distintos lenguajes
private int age; @Ignore private int sessionId; // Getters y Setters generados por el IDE public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public int getSessionId() { return sessionId; } public void setSessionId(int dontPersist) { this.sessionId = sessionId; } }
contexto 2.Ejecuta la query/creación/edición/eliminación 3.Cierra el Realm ene se thread, close() Realm, RealmObject o RealmResults no se pueden pasar entre threads Realm.getInstace() devuelve singleton en el thread
para iOS 2. Sólo en devices protegidos con contraseña // Genera una clave de encriptado aleatoria NSMutableData *key = [NSMutableData dataWithLength:64]; SecRandomCopyBytes(kSecRandomDefault, key.length, (uint8_t *)key.mutableBytes); // Establece dicha clave para del Realm por defecto [RLMRealm setEncryptionKey:key forRealmsAtPath:RLMRealm.defaultRealmPath];
puedes olvidar MIGRAR (O tu aplicación se quejará con un repentino Crash) // Antes de inicializar la base de datos [RLMRealm setSchemaVersion:1 forRealmAtPath:[RLMRealm defaultRealmPath] withMigrationBlock:^(RLMMigration *migration, NSUInteger oldSchemaVersion) { if (oldSchemaVersion < 1) { [migration enumerateObjects:Person.className block:^(RLMObject *oldObject, RLMObject *newObject) { newObject[@"fullName"] = [NSString stringWithFormat:@"%@ %@", oldObject[@"firstName"], oldObject[@"lastName"]]; }]; } }];
que otras soluciones 3.Activo -> Desarrollo continuo y al día en features 4.Grandes empresas ya lo usan -> (e.g Groupon) Ahorrarás muchos dolores de cabeza al trabajar con contextos, threads y podrás enfocarte en la app
RLMObjects, RLMResults y RLMRealm entre threads » Soporte para migraciones feature WIP » Los ficheros de Realm sólo pueden ser accedidos por un Realm al mismo tiempo » Notificaciones con poca información » (iOS) NSDates truncados al segundo