今天,我尝试迁移到新的(谷歌)Firebase。
不仅API不同,数据库中存储数据的方式也不同。例如,旧Firebase最初以这种方式将数据写入数据库时,数据库中保存为“7.5”的数字(双精度)没有正确解析(标识为字符串)。必须手动重写双打(“7.5”到7.5)、布尔型(“true”到true)等数据库。
现在我遇到了一个新问题。尝试将枚举写入数据库时出错:
致命异常:主进程:com.aayaffe.sailingracecoursemanager,PID: 21845java.lang.运行时异常:无法启动活动ComponentInfo{com.aayaffe.sailingracecoursemanager/com.aayaffe.sailingracecoursemanager.map.GoogleMapsActivity}:com.google.firebase.database.数据库异常:在类com.aayaffe.sailingracecoursemanager.communication.对象类型android.app.ActivityThread.perform启动活动(ActivityThread.java:2658)在android.app.ActivityThread.handle启动活动(ActivityThread.java:2723)在android.app.ActivityThread.access900美元(ActivityThread.java:172)在android.app.ActivityThread$H. handleMessage(ActivityThread.java:1422)android.os.Handler.dispatchMessage(Handler.java:102)在android.os.Loop. cle(Loop. java: 145)在android. app。ActivityThread. main(ActivityThread. java: 5832)在java. lang.反射。方法调用(本机方法)在java. lang.反射。方法调用(方法. java: 372)在com. android. interal. os。ZygoteInit$method odAndArgsCaller. run(ZygoteInit. java: 1399)在com. android. interal. os。ZygoteInit. main(ZygoteInit. java: 1194)引起:com. google. Firebase.数据库。数据库异常:在com. aayaffe. sailingracecourSemanager.通信类中找不到要序列化的属性。对象类型在com. google. android. gms. interal. zzaix$zza。未知来源)在com. google. android. gms. interal. zzaix. zzj(未知来源)在com. google. android. gms. interal. zzaix. zzaw(未知来源)在com. google. android. gms. interal. zzaix. zzaD(未知来源)在com. google. android. gms. interal. zzaix. zzaix$zza. zzaE(未知来源)在com. google. android. gms. interal. zzaix. zzaw(未知来源)在com. google. android. gms. interal. zzaix. zzav(未知来源)在com. google. Firebase.数据库。zza(未知来源)在com. google. Firebase.数据库。数据库引用. setValue(未知来源)在com. aayaffe. sailingracecourSemanager.通信。Firebase. WriteBoatObject(Firebase. java: 135)at com. aayaffe. sailingracecourSemanager. map.GoogleMapsActivity5美元. run(GoogleMapsActive. java: 284)在com. aayaffe. sailingracecourSemanager. map.在android. app上启动(GoogleMapsActive. java: 407)。在android. app.在android. app.在android. app上执行启动活动(ActivityThread. java: 2621)。处理启动活动(ActivityThread. java: 2723)
思想?
--编辑--
代码:
public enum ObjectTypes {
Gate,
Other
}
FirebaseDatabase.getInstance().getReferenceFromUrl(c.getString(R.string.firebase_base_url)).child("test").setValue(ObjectTypes.Gate);
我对Firebase 9.0.0的感觉是,它更多地坚持留档。
Json支持的格式是(字符串,长,双,布尔,映射,列表)-来自Firebase文档。
以前的SDK——使用Jackson——更灵活。一个字符串可以很容易地解析为模型中的Long,只要它是一个数字。列表可以解析为数组[],等等。。。不再是了。
这可能是好的,也可能不是。一方面,你会失去灵活性,但另一方面,它会让你对定义的模型和你实际部署到网络上的内容更加有意识。
关于枚举,这篇文章可能会有所帮助。
问题内容: 给定以下枚举,将Int强制转换为Java中的枚举的正确方法是什么? 问题答案: 尝试在必须为or的地方,即该枚举的有效序数。 请注意,在Java中,枚举实际上是类(因此,枚举值是对象),因此您不能将an 甚至转换为枚举。
我有枚举类,我想向列表视图显示枚举数据。谁能说出如何做到这一点?
问题内容: 我有一个返回int类型的函数。但是,我只有TAX枚举的值。 如何将TAX枚举值转换为整数? 问题答案: 您需要以某种方式使枚举公开,例如 (顺便说一句,我将名称更改为更常规和易读。) 这是 假设 您要在构造函数中分配值。如果这不是您想要的,则需要向我们提供更多信息。
问题内容: 我有一个第三方图书馆给我一个图书馆。我想像Java 8那样懒惰地使用该枚举,并调用诸如此类的东西。 有没有现成的图书馆?我已经在引用Guava和Apache Commons,所以如果其中任何一个都有理想的解决方案。 另外,在保留所有内容的懒惰性质的同时将a 变成最佳/最简单的方法是什么? 问题答案: 这个答案已经提供了一个解决方案,可以解决以下问题: 应当强调的是,由此而来 的 懒任何
问题内容: 我有一些Java代码,我想将其翻译为C#。srcParams是一个哈希表。 这是Java代码: 这是我在C#中的尝试 你能告诉我是否正确吗? 问题答案: 您所拥有的几乎可以了,只需重命名变量并添加的使用即可:
问题内容: 鉴于以下枚举: 如何从下面的常量获取字符串? 问题答案: 不确定此功能是在哪个Swift版本中添加的,但是现在( Swift 2.1 )您只需要以下代码: 如果将字符串用于原始值,则每种情况的隐式值都是该 情况名称 的 文本 。 […] 在上面的示例中,CompassPoint.south的隐式原始值为“ south”,依此类推。 您可以使用其rawValue属性访问枚举用例的原始值: