Как я могу преобразовать аннотированные данные! к какому-то типу

#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)
      }
  }
...