我当前的Firebase实时数据库中具有以下数据结构:
public class E {
public int x;
public int y;
public int x;
}
我的Android应用程序当前正在使用该数据库,生产环境中的用户已经在使用该数据库。
我想向类(字符串z)添加一个新成员,如下所示:
public class E {
public int x;
public int y;
public int x;
public String z;
}
使用该应用程序的旧版本时,我在logcat中看到此错误:
W / ClassMapper:在com.me.you.E类上找不到z的setter / field
应用程序被卡住。
在应用程序开始指导用户更新其应用程序之前,我已经进行了数据库版本检查,但是希望在这种特定情况下不需要它。
数据上可能有版本控制吗?还有其他建议吗?
答案 0 :(得分:1)
我认为您可能未添加与新变量z相关的getter和setter方法。
答案 1 :(得分:1)
要摆脱该警告消息,请用@IgnoreExtraProperties
注释您的班级:
@IgnoreExtraProperties
public class E {
public int x;
public int y;
public int x;
}
请参见reference documentation for the IgnoreExtraProperties
annotation:
序列化到带有此注释的类时,将忽略未映射到类字段的属性。
正如Doug所评论的那样,除了摆脱警告的简单更改之外,Firebase上的数据迁移是一个复杂的主题,不可能在单个Stack Overflow问题中回答。但是我们可以尝试解决特定的问题,例如警告和崩溃。如果您的应用仍然无法加载,请发布minimal complete verifiable way to reproduce the problem。