0

我正在尝试执行 Parse 请求,但出现此错误:

com.parse.ParseObject 不能转换为 com.mysapp.mys.common.model.Lesson

但它不会在请求返回后进入订阅内部。 服务器的答案很好,因为我有它的实时日志。

我相信当我收到答案以及使用 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)
        )

如果您需要任何详细信息,请随时问我。

4

1 回答 1

1

以下方法getSessions返回 aParseObject而不是返回Lesson类型对象。尝试检查类型并从中返回适当的模型。

将返回类型更改getLessons为此

   ParseObservable.callFunction<List<Any>>("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)
        )

要获得com.mysapp.mys.common.model.LessonPOJO 课程,您可以执行以下任何操作

  1. 使用注释Lessons@ParseClassName("Lesson") 查看此答案以获取详细信息

  2. 将解析对象转换为 JSON 并使用 gson 转换为课程 POJO

最后,不要忘记对这一行进行必要的更改ParseObservable.callFunction>("getSessions", params).singleOrError()

于 2019-06-11T16:34:21.687 回答