Kotlin/Parse : com.parse.ParseObject 无法转换为
Kotlin/Parse : com.parse.ParseObject cannot be cast to
我正在尝试执行解析请求,但出现此错误:
com.parse.ParseObject cannot be cast to
com.mysapp.mys.common.model.Lesson
但在请求的 return 之后它不会进入订阅内部。
服务器的回答很好,因为我有它的实时日志。
我相信我在收到答案时以及在使用 lambda 隐式转换时遇到了问题。但是我不知道如何通过其他方式实现它。
fun getLessons(coach: Boolean, lessonType: LessonType?, date: Date?, position: LatLng, distance: Double): Single<List<Lesson>> {
val params = hashMapOf<String, Any?>()
if (lessonType == null){
params["lessonType"] = ""
}
else{
}
params["lessonType"] = 12
params["date"] = date
params["geoPoint"] = ParseGeoPoint(44.557514, -0.86099)
params["within"] = 4935.772
Log.e("params : ", "lessonType: " + params.get("lessonType") + "| date : " + params.get("date").toString()
+ " | geoPoint: " + params.get("geoPoint") + " | within: "+ params.get("within"))
return ParseObservable.callFunction<List<Lesson>>("getSessions", params).singleOrError()
}
我如何对待它:
disposables.add(repository.getLessons(false, lesson, dateSelected, position, distance.toDouble())
.observeOn(Schedulers.io())
.subscribe({ lessons ->
Log.e("LESSONS", lessons.toString())
removeCanceledLessonsAndEmit(lessons)
}, Throwable::printStackTrace)
)
我不知道 Parse 是如何工作的,所以我复制了这个
请求项目中已经存在的人:
fun getAverageRating(coachId: String): Single<HashMap<String, Int>> {
val params = hashMapOf<String, String>()
params["coachId"] = coachId
return ParseObservable.callFunction<HashMap<String, Int>>("getAverageRating", params).singleOrError()
}
如何处理:
disposables.add(repository.getAverageRating(coachId)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ rating ->
if (rating > 0) {
ratingBar.visibility = View.VISIBLE
ratingBar.rating = rating
} else
ratingBar.visibility = View.GONE
}, Throwable::printStackTrace)
)
如果您需要任何详细信息,请随时问我。
下面的方法 getSessions
是 returning 一个 ParseObject
而不是 returning 一个 Lesson
类型的对象。尝试从中检查类型和 return 合适的型号。
将 getLessons
return 类型更改为此
ParseObservable.callFunction<List<Any>>("getSessions", params).singleOrError()
并像这样处理以检查 return 类型。
disposables.add(repository.getLessons(false, lesson, dateSelected, position, distance.toDouble())
.observeOn(Schedulers.io())
.subscribe({ lessons ->
Log.e("LESSONS", lessons.toString())
//removeCanceledLessonsAndEmit(lessons)
}, Throwable::printStackTrace)
)
要获取 com.mysapp.mys.common.model.Lesson
POJO 课程,您可以执行以下任一操作
用@ParseClassName("Lesson")
注释Lessons
classSee this answer for details
将解析对象转换为 JSON 并使用 gson 转换为 Lesson POJO
最后,不要忘记对这一行进行必要的更改 ParseObservable.callFunction>("getSessions", params).singleOrError()
我正在尝试执行解析请求,但出现此错误:
com.parse.ParseObject cannot be cast to com.mysapp.mys.common.model.Lesson
但在请求的 return 之后它不会进入订阅内部。 服务器的回答很好,因为我有它的实时日志。
我相信我在收到答案时以及在使用 lambda 隐式转换时遇到了问题。但是我不知道如何通过其他方式实现它。
fun getLessons(coach: Boolean, lessonType: LessonType?, date: Date?, position: LatLng, distance: Double): Single<List<Lesson>> {
val params = hashMapOf<String, Any?>()
if (lessonType == null){
params["lessonType"] = ""
}
else{
}
params["lessonType"] = 12
params["date"] = date
params["geoPoint"] = ParseGeoPoint(44.557514, -0.86099)
params["within"] = 4935.772
Log.e("params : ", "lessonType: " + params.get("lessonType") + "| date : " + params.get("date").toString()
+ " | geoPoint: " + params.get("geoPoint") + " | within: "+ params.get("within"))
return ParseObservable.callFunction<List<Lesson>>("getSessions", params).singleOrError()
}
我如何对待它:
disposables.add(repository.getLessons(false, lesson, dateSelected, position, distance.toDouble())
.observeOn(Schedulers.io())
.subscribe({ lessons ->
Log.e("LESSONS", lessons.toString())
removeCanceledLessonsAndEmit(lessons)
}, Throwable::printStackTrace)
)
我不知道 Parse 是如何工作的,所以我复制了这个
请求项目中已经存在的人:
fun getAverageRating(coachId: String): Single<HashMap<String, Int>> {
val params = hashMapOf<String, String>()
params["coachId"] = coachId
return ParseObservable.callFunction<HashMap<String, Int>>("getAverageRating", params).singleOrError()
}
如何处理:
disposables.add(repository.getAverageRating(coachId)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ rating ->
if (rating > 0) {
ratingBar.visibility = View.VISIBLE
ratingBar.rating = rating
} else
ratingBar.visibility = View.GONE
}, Throwable::printStackTrace)
)
如果您需要任何详细信息,请随时问我。
下面的方法 getSessions
是 returning 一个 ParseObject
而不是 returning 一个 Lesson
类型的对象。尝试从中检查类型和 return 合适的型号。
将 getLessons
return 类型更改为此
ParseObservable.callFunction<List<Any>>("getSessions", params).singleOrError()
并像这样处理以检查 return 类型。
disposables.add(repository.getLessons(false, lesson, dateSelected, position, distance.toDouble())
.observeOn(Schedulers.io())
.subscribe({ lessons ->
Log.e("LESSONS", lessons.toString())
//removeCanceledLessonsAndEmit(lessons)
}, Throwable::printStackTrace)
)
要获取 com.mysapp.mys.common.model.Lesson
POJO 课程,您可以执行以下任一操作
用
@ParseClassName("Lesson")
注释Lessons
classSee this answer for details将解析对象转换为 JSON 并使用 gson 转换为 Lesson POJO
最后,不要忘记对这一行进行必要的更改 ParseObservable.callFunction>("getSessions", params).singleOrError()