背景:我正在尝试使用消息传递应用程序
问题描述:通常 Codesnipped 2 像魅力一样工作并从服务器加载数据。但是当使用 Codesnipped 1 激活 LocalDatastore 时,错误
java.lang.ClassCastException:com.parse.ParseObject 无法转换为 at.test.activity.Message
出现。Message 是 ParseObject 的子类。
当使用调试器查看发生错误的行时,可以看到移交给 done 函数的列表在第一个位置仅包含一个类型为“Message”的对象,而所有其他元素的类型为“ParseObject” "(-> 屏幕截图: 激活本地数据存储时的 DebuggerOutput)。在没有激活本地数据存储的情况下,此列表的每个元素都是“消息”类型。
我究竟做错了什么?提前致谢!
代码片段1:
Parse.initialize(new Parse.Configuration.Builder(this)
.applicationId("test")
.enableLocalDataStore()
.clientBuilder(builder)
.server("http://someinstallation.com/parse/")
.build());
代码片段2:
ParseQuery query = ParseQuery.getQuery(Message.class);
ArrayList idsToQuery = new ArrayList<>();
idsToQuery.add(getSenderID());
idsToQuery.add(getRecipiantID());
query.whereContainedIn("sender", idsToQuery);
query.whereContainedIn("recipiant", idsToQuery);
query.orderByDescending("createdAt");
query.findInBackground(new FindCallback() {
public void done(List messages, ParseException e) {
if (e == null) {
addMessagesTomList(messages);
}
else {
Log.e("message", "Error Loading Messages" + e);
}
}
}); `