我想检查我的数据库写入是否成功,以便向用户显示错误消息。
我目前的方法不起作用,因为它说“类型不匹配,所需的单位找到电子邮件状态”
class EmailRepositoryImpl : EmailRepository {
private val db = Firebase.firestore
override fun sendEmail(email: Email): EmailStatus<Nothing> {
db.collection("emails").document().set(email).addOnCompleteListener {
if (it.isSuccessful) return@addOnCompleteListener EmailStatus.Success<Nothing>
if (it.isCanceled) return@addOnCompleteListener EmailStatus.Error(it.exception!!)
}
}
}
sealed class EmailStatus<out T> {
data class Success<out T>(val data: T) : EmailStatus<T>()
data class Error(val exception: Exception) : EmailStatus<Nothing>()
}
有可能写出这样的东西吗?据我所知有一个通用的firebase错误类型
,但我没有找到任何与kotlin或Android相关的东西。。。
我很感激你的帮助,谢谢
问题是AddOnCompleteListener
回调不返回任何内容(单元),而您正试图从该作用域返回EmailStatus
你有三种方法吗
我认为最简单的方法来做这个一次性操作是使用Coroutines,我已经写了一篇文章在这里