안드로이드

안드로이드 FirebaseFireStore toObject(MyObject::class.java) 에러 날 때 해결방법 Firebase Firestore toObject() with Kotlin

알통몬_ 2019. 1. 30. 14:00
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


안드로이드에서 Firebase의 FirebaseFirestore를 사용할 때
받은 데이터를 객체로 바로 변환해서 받을 수 있습니다.
코틀린으로 개발 시 아래 코드처럼 받을 수 있는데요.
PatientInfo 객체로 받는 코드입니다.

dr = adminApp.ff.collection(adminApp.CAREGIVER).document(cId).collection(adminApp.PATIENTS).document(pId)
val a = dr.path
Log.e("a", a)
dr.get().addOnSuccessListener {
val patientInfo = it.toObject(PatientInfo::class.java)
Log.e("patientname", patientInfo!!.name)
val date = Date()
bottomTab(date, patientInfo)
}
PatientInfo는 data class 입니다.

data class PatientInfo(
val age: String,
val bodies: Int,
val careDocs: String,
val careName: String,
val drugs: String,
val gender: String,
val id: String,
val imageUrl: String,
val meals: String,
val name: String,
val room: String,
val sleeps: Int
)
이런 데이터 클래스인데요.
이렇게 사용하게 되면
no argument constructor 어쩌구하면서 에러가 발생합니다.
그리고 사용하려하면 NullPointerException 이 발생합니다.

해결방법은 간단한데요.
데이터 클래스에 초기값들을 주면 됩니다.
예를 들어 문자열은 ""으로 정수형은 0으로 실수형은 0.0f, or 0.0으로
data class PatientInfo(
val age: String = "",
val bodies: Int = 0,
val careDocs: String = "",
val careName: String = "",
val drugs: String = "",
val gender: String = "",
val id: String = "",
val imageUrl: String = "",
val meals: String = "",
val name: String = "",
val room: String = "",
val sleeps: Int = 0
)
위처럼요.

이렇게 하면 toObject를 사용해서 데이터를 객체로 받을 수 있습니다.
이상입니다.



반응형