🌒MoonLab

> 在MoonLab中搜索

坑:Litepal save方法返回true却没有保存

Category: Programming

🏷️  Android   中文

在开发 Madoka 日记时,做到导出导入的功能时,我想偷个懒导出直接用 Gson 将 Java 对象转换为 json 然后放在 txt 中,导入的时候再将 json 转为 javaBean 就行啦。

而数据库我用的是 Litepal 直接搞,使用这个库的好处就是速度快,方便,适合新手。

但其实 sqlite 的语法和一些其他的语句并不难,所以用这个库就是为了方便…

使用 Litepal 储存数据时,需要调用 save() 方法。

这里我就遇到了一个问题,明明 save() 方法返回的是 true ,但数据库里没有需要保存的数据啊?

Gson gson = new Gson();
Diary diary = gson.fromJson(json, Diary.class);
return diary.save();

这是调用 Gson 将 json 转换为 javabean 对象。

明明 Diary 的内容全是正确的,我开始询问度娘。

结果没找到跟我的问题直接相关的文章,结果我看到了有个人在吐槽啥 setting getting,我就想到了会不会是因为没有调用 Diary 的构造方法?

Diary 作为一个 Litepal 的,它是继承自 LitePalSupport 的,会不会是因为没有调用 LitePalSupport 的构造方法呢?

我将导入代码改了一下:

Gson gson = new Gson();
Diary diary = gson.fromJson(json, Diary.class);
Diary saveDiary = new Diary();
saveDiary.setId(diary.getId());
saveDiary.setCreatedTime(diary.getCreatedTime());
saveDiary.setLastUpdatedTime(diary.getLastUpdatedTime());
... 省略一万个代码
return saveDiary.save();

果然,最后正常了…

(水文真开心)

咕咕咕

2018-2023 MoonLab