
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
안녕하세요? 2주차 Random Lotto App 복습을 하고 있는데요,
기존에 문제 없이 실행되었는데 복습을 하려고 하니 에러가 납니다.
onSuccess(result.toLottoData())가 나는데 튜터님 강의를 보면 LottoController.kt
- 데이터 표시 및 사용자 인터랙션 구현
- [코드스니펫] 로또 번호 조회 사용자 인터페이스 연결에서 LottoController 파일 생성 후
코드스니펫 복사, 붙여넣기를 하면 toLottoData()는 저절로 해결 되었는데 이번에 복습을 하니 빨간색이
생기는 이유가 먼가요?
답변 부탁 드립니다.,
감사합니다.
----------------------------------------------------------------------------------------------------------
- /LottoController.kt 에서
class LottoController(private val service: LottoService = RetrofitInstance.service) {
fun getLottoNumber(num: Int, onSuccess: (LottoData) -> Unit, onError: (String) -> Unit) {
Log.d("getLottoNumber", "■ [/LottoController.kt] [getLottoNumber()] ==> [T_01] [로또 정보 가져 오기] ■ [num]: $num")
// API 호출 및 응답 처리(CoroutineScope: 비동기식 호출)
CoroutineScope(Dispatchers.Main).launch {
runCatching {
val result = withContext(Dispatchers.IO) { service.getLottoNumber(num = num) }
Log.d("getLottoNumber", "■ [/LottoController.kt] [getLottoNumber()] ==> [T_51] [로또 정보 가져 오기 결과] ■ [result]: $result")
onSuccess(result.toLottoData()) // 에러가 남 ■■■
}.onFailure {
Log.e(TAG, "getLottoNumber() failed! : ${it.message}")
onError(it.message ?: "Unknown error")
}
}
}
}
----------------------------------------------------------------------------------------------------------
- /LottoData.kt 에서
package com.example.randomlottoapp.data
private const val EMPTY_STRING = "-"
data class LottoData(
val gameNumber: String = EMPTY_STRING, // 회차 번호
val winNumbers: List<String> = emptyList(), // 생성된 로또 번호
val bonusNumber: String = EMPTY_STRING, // 보너스 번호
val totalWinPrize: String = EMPTY_STRING, // 1등 총 당첨 금액
val winPrize: String = EMPTY_STRING, // 1게임 당 당첨 금액
val winnerCount: String = EMPTY_STRING, // 로또 1등 당첨자
val data: String = EMPTY_STRING // 로또 당첨일
)
----------------------------------------------------------------------------------------------------------
- /LottoModel.kt 에서
package com.example.randomlottoapp.data
import com.google.gson.annotations.SerializedName
data class LottoModel(
@SerializedName("drwNo")
val drwNo: String, //회차 번호
@SerializedName("drwNoDate")
val drwNoDate: String, //로또 날짜
@SerializedName("drwtNo1")
val drwtNo1: String,
@SerializedName("drwtNo2")
val drwtNo2: String,
@SerializedName("drwtNo3")
val drwtNo3: String,
@SerializedName("drwtNo4")
val drwtNo4: String,
@SerializedName("drwtNo5")
val drwtNo5: String,
@SerializedName("drwtNo6")
val drwtNo6: String,
@SerializedName("bnusNo")
val bnusNo: String,
@SerializedName("firstAccumamnt")
val returnValue: String,
@SerializedName("totSellamnt")
val totSellamnt: String,
@SerializedName("firstWinamnt")
val firstWinamnt: String
) {
fun toLottoData(): LottoData {
return if (returnValue == "fail") {
LottoData()
} else {
LottoData(
gameNumber = drwNo,
winNumbers = listOf(drwtNo1, drwtNo2, drwtNo3, drwtNo4, drwtNo5, drwtNo6),
bonusNumber = bnusNo,
data = drwNoDate,
totalWinPrize = totSellamnt,
winPrize = firstWinamnt
)
}
}
}
==============================================================================================================
.jpg)
