【发布时间】:2019-10-23 06:29:39
【问题描述】:
Firestore 将值保留为双精度值。没问题,我将一个 Int 存储到 Firestore 中,然后我尝试将它作为 Int 读回,如下所示:
docSnap["myNumber"] as Int
当我这样做时,我得到了异常
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.Integer
所以我必须这样做
(docSnap["myNumber"] as Long).toInt()
我有两个问题:
- 自从我登录
docSnap["myNumber"]时,它清楚地打印了一个 int,编译器怎么知道它应该是一个 long? - 有没有更简单的方法可以将“long-String”转换为 int?
【问题讨论】:
-
当您使用
docSnap["myNumber"]时,您如何看待int和long之间的区别?只要someLong在 int 的范围内,someInt.toString()和someLong.toString()都会给出相同的字符串。 -
感谢您的回复,但我无法应用您的 cmets 来更好地理解问题:为什么将字符串“9”转换为 Int 时出现异常?为什么期待Long?
-
我问了一个关于你的第一个问题的问题。你是说
docSnap["myNumber"]显然是在打印一个int。你这是什么意思? -
另外,
as Int不会将字符串转换为 int。toInt()这样做。
标签: firebase kotlin casting google-cloud-firestore