liangjingkanji / Serialize

🍒 Android 简单高性能读写本地数据, 直接存储对象/基础类型
http://liangjingkanji.github.io/Serialize/
Apache License 2.0
239 stars 20 forks source link

导入 SharedPreferences 后如何读取 #25

Closed mcxinyu closed 1 year ago

mcxinyu commented 1 year ago

请问 importFromSharedPreferences 导入配置后,怎么读取值呢?key 还是 config + keyName 么?

liangjingkanji commented 1 year ago

key

对于迁移过来的数据你依然可以使用单例对象+字段来读写, 前提是你使用了注解指定mmapID(如果不使用注解会自动拼接类名) 这个处理方式我实际上认为不合适, 但是为了考虑兼容以前的数据我在2.0版本没有修改, 但是我现在计划删除自动拼接类名这个处理方式

mcxinyu commented 1 year ago

那可能是一个破坏性升级咯

liangjingkanji commented 1 year ago

是的, 但是我认为这样学习成本更低 且更简单吧?

如果现在就在使用注解的并不会破坏性

mcxinyu commented 1 year ago

是的,key-value 关系更简单

建议可以增加一些过渡代码,例如增加一个依赖(2.0以下版本升级上来的可引入),来配置是否兼容 拼接类名,然后查询的时候先查询 k-v 模式,测试不到 key 的时候再查询一次拼接的 key。

mcxinyu commented 1 year ago

给其他用户的帮助,

导入的时候设定好 mmapID,例如 MMKV.mmkvWithID("AfixedString").importFromSharedPreferences(aSharedPreferences)

然后在单例对象上添加配置

@SerializeConfig(mmapID = "AfixedString")
object ThisIsAObject {
    var abc: String by serial()
}

注意,abc 字段是之前已经在 aSharedPreferences 中存储的 key,如果不是,请使用 var abc: String by serial(name = "name")