#kotlin
Вопрос:
Я получаю эту ошибку несоответствия типа в следующем коде kotlin. Я включил сюда только связанный код.
Как я могу исправить эту ошибку?
Как я могу перейти AnnotatedData<SomeType!>!
в SomeType
Спасибо
Type mismatch: inferred type is AnnotatedData<LeaderboardsClient.LeaderboardScores!>! but LeaderboardsClient.LeaderboardScores was expected
...
import com.google.android.gms.games.LeaderboardsClient
import com.google.android.gms.games.leaderboard.LeaderboardScore
import com.google.android.gms.games.leaderboard.LeaderboardScoreBuffer
...
private fun getLeaderboardData(leaderboardID: String, result: Result) {
showLoginErrorIfNotLoggedIn(result)
leaderboardsClient!!
.loadTopScores(leaderboardID, 2, 0, 10)
.addOnSuccessListener { scores ->
val leaderboardScores: LeaderboardsClient.LeaderboardScores
leaderboardScores = scores
val out = "score"
result.success(out)
}.addOnFailureListener {
result.error("error", "Unknown error", null)
}
}
...
Комментарии:
1. Трудно помочь без дополнительной информации здесь. Похоже, что этот
AnnotatedData
тип взят из используемой вами библиотеки (которая предоставляетaddOnSuccessListener
). Вам следует проверить свойства этогоAnnotatedData
типа, это, вероятно, дает доступ к содержимому правильного типа.2. На самом деле, я нашел решение. Я добавил к этому вопросу. Пожалуйста, проверьте мое решение, если это хорошее решение.
Ответ №1:
Я нашел решение. Я не уверен, что это достойный вариант, потому что я новичок в котлине. Но, по крайней мере, это работает.
...
import com.google.android.gms.games.AnnotatedData
...
private fun getLeaderboardData(leaderboardID: String, result: Result) {
showLoginErrorIfNotLoggedIn(result)
leaderboardsClient!!
.loadTopScores(leaderboardID, 2, 0, 10)
.addOnSuccessListener { scores ->
val leaderboardScores: LeaderboardsClient.LeaderboardScores?
val annotatedData: AnnotatedData<LeaderboardsClient.LeaderboardScores>
annotatedData = scores
leaderboardScores = annotatedData.get()
...
}.addOnFailureListener {
result.error("error", "Unknown error", null)
}
}
...