我创建了一个iOS
应用,将数据存储到Firebase实时数据库中,如下所示:
users
- ID
-- Email: "test@domain.com"
-- UsersName: "test"
-- Level: 1
-- XP: 0
现在,我开始使用Kotlin进行Android开发,并且数据以值名称的首字母小写存储,如下所示:
users
- ID
-- email: "test@domain.com"
-- usersName: "test" (No mistake, the N is uppercased)
-- level: 1
-- xp: 0 (No mistake, the P is lowercase)
这是我的代码:
data class User(var UsersName: String = "",
var XP: Int = 0,
var Level: Int = 1,
var Email: String = "")
private fun saveUserToFirebaseDatabase(){
val uid = FirebaseAuth.getInstance().uid ?: ""
val ref = FirebaseDatabase.getInstance().getReference("users/$uid")
val mDatabase = FirebaseDatabase.getInstance().getReference();
val username = usernameSignUp.text.toString()
val user = User(username, 0, 1, SignUpEmailtext.text.toString())
print(user)
mDatabase.child("users").child(uid).setValue(user)
.addOnSuccessListener {
}
.addOnFailureListener{
}
}
我希望值的名称与在类中的命名方式完全相同(就像iOS应用程序将其保存一样)。
答案 0 :(得分:0)
Kotlin在JVM(Java虚拟机)上工作,因此为了能够运行.kt
文件,首先应将其编译为Java文件。因此,当使用如下所示的类时:
data class User(var UsersName: String = "",
var XP: Int = 0,
var Level: Int = 1,
var Email: String = "")
根据Java Naming Conventions重新绑定变量创建相应的Java文件:
它应该是小写字母,例如
java
,lang
。
这意味着无论您选择字段名称以大写字母还是小写字母开头,所有字段都将转换为以小写字母开头。这就是为什么数据库中的属性会这样显示。该约定不仅在Java / Kotlin中可用,而且在其他编程语言中也可用,因此我建议您在项目中使用此建议。
关于Kotlin,请记住,最后,所有内容都将转换为字节码,以便可以在JVM上运行。