Un marco de almacenamiento de objetos modular para proyectos multiplataforma de Kotlin. Uso ObjectStore proporciona una interfaz de almacenamiento de clave/valor simple que, de forma predeterminada, utiliza detalles de tipo para derivar la clave automáticamente. Para crear un ObjectStore necesita dos cosas: ObjectStoreWriter: proporciona el mecanismo de persistencia para almacenar datos para acceso posterior. ObjectStoreSerializer: proporciona el mecanismo de serialización para transformar objetos para su almacenamiento. val store = ObjectStore( storeWriter = SharedPreferencesStoreWriter(«prefs», context), storeSerializer = JsonStoreSerializer() ) // Almacenar un objeto store.put(User(«username», «email», …)) // Obtener un objeto o usuario de valor nulo: ¿Usuario? = tienda.getOrNull() // Obtener un objeto o lanzar val usuario: Usuario = store.get() // Obtener un objeto o valor predeterminado usuario: Usuario = store.get(default = Usuario(…)) // Obtener un valor StateFlow userFlow: StateFlow = tienda.getFlow() // Se emitirán llamadas para `poner` nuevos objetos de usuario userFlow.collect { println(it) } // Obtener todas las claves store.keys() // Eliminar un objeto store.remove() // Eliminar todos los objetos store.clear() Al almacenar tipos básicos como String, Boolean, etc., debe proporcionar una clave para el registro. store.put(false, clave = «mi_clave») store.get(predeterminado = falso, clave = «my_key») NOTA: Cuando se apunta a Javascript, todas las clases utilizadas con ObjectStore deben estar anotadas con @Serializable. Esto se usa para derivar claves basadas en nombres de parámetros y clases; otras plataformas no usan la biblioteca Kotlinx.serialization en objectstore-core. Serializadores Para convertir objetos en datos adecuados para el almacenamiento se requiere una implementación de ObjectStoreSerializer. Los siguientes módulos proporcionan capacidades de serialización utilizando el módulo Kotlinx.serialization correspondiente. objectstore-cbor: CborStoreSerializer() objectstore-json: JsonStoreSerializer() objectstore-protobuf: Escritores ProtoBufStoreSerializer() El almacenamiento de datos de objetos requiere una implementación de ObjectStoreWriter. Los siguientes escritores se proporcionan en el módulo objectstore-core: Android: SharedPreferencesStoreWriter(«prefs_name», context) iOS/macOS/tvOS/watchOS: UserDefaultsStoreWriter() Navegador JS: LocalStorageStoreWriter() Todos: InMemoryStoreWriter() File Writer The objectstore-fs proporciona almacenamiento basado en archivos usando okio. Todos los destinos son compatibles excepto iosArm32 y jsBrowser. val store = ObjectStore( storeWriter = FileStoreWriter(«/storage-directory») ) La ruta proporcionada no debe existir o ser un directorio existente donde se puedan almacenar archivos. Cada valor se almacenará en un archivo separado utilizando la clave codificada en hexadecimal como nombre de archivo. Escritores seguros Para almacenar datos de forma segura, el módulo objectstore-secure proporciona escritores que cifran los datos cuando se almacenan en el disco. iOS/macOS/tvOS/watchOS: KeychainStoreWritre(«com.service.name», «com.service.group») Android: EncryptedSharedPreferencesStoreWriter(«prefs_name», context) Escritores envueltos ValueTransformingStoreWriter proporciona un enlace para codificar/decodificar valores antes de que se escriben en el disco. Los métodos de transformación se definen como (tipo: KType, valor: T) -> T, cuando no se controlan debe devolver el valor original. val storeWriter = InMemoryStoreWriter().transformValue( transformGet = { _, valor -> (valor como? Cadena)?.base64Decoded() ?: valor }, transformSet = { _, valor -> (valor como? Cadena)?.base64Encoded () ?: valor } ) MemCachedStoreWriter proporciona almacenamiento en caché diferido en memoria alrededor de cualquier implementación de ObjectStoreWriter. val storeWriter = FileStoreWriter(«/data»).memCached() Descargar repositorios { mavenCentral() // O instantáneas maven(«https://s01.oss.sonatype.org/content/repositories/snapshots/») } dependencias { implementación(«org.drewcarlson:objectstore-core:$VERSION») // Serializadores implementación(«org.drewcarlson:objectstore-cbor:$VERSION») implementación(«org.drewcarlson:objectstore-json:$VERSION») implementación( «org.drewcarlson:objectstore-protobuf:$VERSION») // Implementación de escritores(«org.drewcarlson:objectstore-fs:$VERSION») implementación(«org.drewcarlson:objectstore-secure:$VERSION») } Toml (Haga clic expandir) [versions]
almacén de objetos = «1.0.0-INSTANTÁNEA»

[libraries]
objectstore-core = { module = «org.drewcarlson:objectstore-core», version.ref = «objectstore» } objectstore-fs = { module = «org.drewcarlson:objectstore-fs», version.ref = «objectstore» } objectstore-cbor = { module = «org.drewcarlson:objectstore-cbor», version.ref = «objectstore» } objectstore-json = { module = «org.drewcarlson:objectstore-json», version.ref = «objectstore» } objectstore-protobuf = { module = «org.drewcarlson:objectstore-protobuf», version.ref = «objectstore» } objectstore-secure = { module = «org.drewcarlson:objectstore-secure», version.ref = «objectstore» } Licencia Este proyecto tiene la licencia Apache-2.0, que se encuentra en LICENCIA.

Source link