这个函数总是返回null. t是不被分配与令牌值.有人能帮助请?
fun getToken(): String? {
var t: String? = ""
FirebaseMessaging.getInstance().token.addOnSuccessListener { token: String? ->
Log.i(TAG,"Token: ${token.toString()}")
t = token
}.addOnFailureListener { e: Exception? ->
Log.e(TAG,"Couldn't get token", e)
}
return t
}
getToken
返回null
,因为此函数在调用成功侦听器之前完成getToken
不会等待请求完成。它所做的唯一一件事是设置成功和失败侦听器,当请求返回响应时将调用这些侦听器。
有几种方法可以解决这个问题:
getToken
as suspend
and use FirebaseMessaging.getInstance().token.await()
to wait until the response is received.getToken
which will be invoked when the response comes. fun getToken(onTokenReceive: (String?) -> Unit) {
FirebaseMessaging.getInstance().token.addOnSuccessListener { token: String? ->
Log.i(TAG,"Token: ${token.toString()}")
onTokenReceive(token)
}.addOnFailureListener { e: Exception? ->
Log.e(TAG,"Couldn't get token", e)
onTokenReceive(null)
}
}
val token = getToken()
// using the `token` here
getToken { token ->
// use the `token` here
}
问题内容: 我有这个代码。对象构造函数是否有可能以某种方式失败,从而为它分配了一个值,并在构造函数返回后释放了该对象? 问题答案: 假设您使用的是PHP 5,则可以在构造函数中引发异常: 为了清楚起见,您可以将其包装在静态工厂方法中: 顺便说一句,某些版本的PHP 4允许您在构造函数中将$ this设置为NULL,但我认为这从未得到正式批准,并且最终删除了“功能”。
我试图将三列作为一个字符串,但由于某些原因,我只得到NULL。 以下是代码: places表包含name、city和country三列,它不是空的,但在某些列中可以包含NULL。 结果是: 我试着从这篇帖子中得到答案,如果任何字段包含NULL,MySQL CONCAT将返回NULL,但它对我不起作用。
有人能帮我处理下面的代码吗?我想要一个使用函数的等价物。 只是一个音符我试过这个,但它不工作 不起作用的是-当值存在并且返回可选值时。empty()我希望原始函数返回null。它现在正在返回“随机”。 我的假设是,由于方法返回,它被替换。 请注意,原始代码是由其他人编写的。由于它有很多依赖关系,我无法更改输入/输出参数。:(
我正在尝试从json文件读取到读取器,以便将其解析为java对象:` ' 我在运行时收到一个NullPointerException。
我在ViewDidLoad函数中有一些代码,它将在调用堆栈的末尾设置一个类变量。我试图重构代码,使其成为一个单独的函数,它将返回值,而不是设置类变量。 由于我缺乏swift知识,我不确定哪里出了问题,我的函数似乎返回得太厄尔了,因为我可以在调试器中告诉我,它在被设置为之前跳转到return。 我还可以在调试器中看到,内部函数在返回主函数后调用。 如何等待内部调用完成后再返回?或者什么是正确的快速方