【问题标题】:First letter of variable's name is changing from uppercase to lowercase变量名的第一个字母从大写变为小写
【发布时间】:2019-08-19 14:09:33
【问题描述】:

我创建了一个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 应用程序保存它们一样)。

【问题讨论】:

    标签: android firebase firebase-realtime-database kotlin


    【解决方案1】:

    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文件:

    应该是小写字母,如javalang

    这意味着无论您选择以大写还是小写开头的字段名称,所有字段都将转换为以小写开头。这就是为什么你的数据库中的属性是这样存在的。此约定不仅在 Java/Kotlin 中可用,而且在其他编程语言中也可用,因此我建议您在项目中使用此建议。

    关于 Kotlin,请记住,最后,所有内容都转换为字节码,以便可以在 JVM 上运行。

    【讨论】:

    • 好的,这意味着我必须更改整个 iOS 应用程序。这几乎是不可能的.. 我的数据库已经有很多用户了.. 我希望在开始使用 iOS 版本之前就更新它.. 还有其他解决方案吗?
    • 变量的命名规则也在official documentation中指定。我不知道你是否可以强迫 Kotlin 不要那样做。我认为您应该为此提出一个单独的问题。关于阅读这类字段,您可以查看我在 post 中的回答。
    猜你喜欢
    • 2017-09-17
    • 2013-11-29
    • 1970-01-01
    • 2023-04-08
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多