커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
toLottoData 문의
[왕초보] Kotlin으로 만드는 공공데이터 활용 안드로이드 앱 v0
2주차
북마크
진*만
댓글
3
추천
0
조회수
19
조회수
19
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


안녕하세요? 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

      )

    }

  }

}

==============================================================================================================



스파르타 즉문즉답





취소
 공유
취소
댓글 0
댓글 알림
나의얼굴