liangjingkanji / Serialize

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

每次覆盖安装应用后,数据模型集合都会变成默认值 #14

Closed SaltedFish-Extreme closed 1 year ago

SaltedFish-Extreme commented 2 years ago

这是保存在Serialize里的数据

var ConfigList: ArrayList<Model> by serialLazy(
        arrayListOf(
            PrintModel("", true, true),
            PrintModel("", true,  true),
            PrintModel("",  true, true)
        )
    )

这是修改数据后重新保存的操作

AppConfig.ConfigList = adapter.data as ArrayList<Model>

每次打开app后数据是没问题的,但是覆盖安装后数据就没了,请问是这样写的吗😂

SaltedFish-Extreme commented 2 years ago

我刚才看了下,好像提示不可序列化异常 NotSerializableException 但是我在model类上加了@Parcelize并且继承了Parcelable,还是这么说😥

SaltedFish-Extreme commented 2 years ago

好像只能存基本类型的list或者是数据类,不能存数据类的集合,这咋办😥

liangjingkanji commented 2 years ago

Model实现了序列化接口吗?

SaltedFish-Extreme commented 2 years ago

Model实现了序列化接口吗?

实现了

@Parcelize
data class PrintConfigModel(var name: String, var enabled: Boolean, var required: Boolean) : Parcelable
liangjingkanji commented 2 years ago

你fork仓库复现问题

SaltedFish-Extreme commented 2 years ago

你fork仓库复现问题

https://github.com/SaltedFish-Extreme/Serialize.git

其实就一行代码

serialize("name" to arrayListOf(TestModel("aaa",true)))
SaltedFish-Extreme commented 2 years ago

java.io.NotSerializableException: com.drake.serialize.sample.model.TestModel

SaltedFish-Extreme commented 2 years ago

@liangjingkanji 老哥不行了吗?要不我就转json用吧😥

Linnnnnn commented 1 year ago

我也遇到这个问题了,var commandHistoryList:MutableList by serial(default = mutableListOf(), name = "command_history") ,点击AS run后数据没了

SaltedFish-Extreme commented 1 year ago

我也遇到这个问题了,var commandHistoryList:MutableList by serial(default = mutableListOf(), name = "command_history") ,点击AS run后数据没了

你也在list里装的对象吗?我把对象集合转成json存取就好了😂

liangjingkanji commented 1 year ago

List里面的对象是否序列化(父类序列化是无效的), 不过我最近计划重构序列化实现了

Linnnnnn commented 1 year ago

我装的是String

SaltedFish-Extreme commented 1 year ago

我装的是String

你装字符串的话,你得重新赋值啊,文档里都写着呢😂

Linnnnnn commented 1 year ago

我装的是String

你装字符串的话,你得重新赋值啊,文档里都写着呢😂

啊,我去看清楚点

SaltedFish-Extreme commented 1 year ago
//改变序列化对象内的字段要求重新赋值
AppConfig.SearchHistory.apply {
//改变序列化对象内的字段要求重新赋值
AppConfig.SearchHistory = this
}