从本地数据存储解析查询后出错
Error after Parse query from local datastore
我正在使用 Parse.com 库,如果用户无法访问互联网,我想从本地数据存储中查询(查询以前使用应用程序时固定的项目)。问题是,如果使用离线查询,它不会 return List<Object>
但很奇怪 AbstractList
并且我不知道如何将其转换为 ArrayList。
有人遇到过这个问题吗?
API 通话:
fun getFilteredObjects(c: Context, searchQuery: String?, filteredObjectsCallback: (ArrayList<ParseObject>?, ParseException?) -> Unit){
val q = ParseQuery.getQuery<ParseObject>(OBJECT_CLASS)
if (!isOnline(c)) q.fromLocalDatastore()
if (searchQuery.isNullOrEmpty()){
q.limit = 10
} else {
q.whereMatches(OBJECT_NAME, searchQuery, "i")
}
q.findInBackground { objectList, err ->
filteredObjectsCallback(objectList as ArrayList<ParseObject>?, err)
}
}
错误行:filteredObjectsCallback(objectList as ArrayList<ParseObject>?, err)
错误:
java.lang.ClassCastException: java.util.AbstractList$SubAbstractListRandomAccess cannot be cast to java.util.ArrayList
您的转换无效,因为类型不可转换:objectList
属于 AbstractList
类型,无法像那样硬转换为 ArrayList
。
相反,使用Arrays.asList(objectList)
,我认为它有自己的实现并翻译抽象列表。
我正在使用 Parse.com 库,如果用户无法访问互联网,我想从本地数据存储中查询(查询以前使用应用程序时固定的项目)。问题是,如果使用离线查询,它不会 return List<Object>
但很奇怪 AbstractList
并且我不知道如何将其转换为 ArrayList。
有人遇到过这个问题吗?
API 通话:
fun getFilteredObjects(c: Context, searchQuery: String?, filteredObjectsCallback: (ArrayList<ParseObject>?, ParseException?) -> Unit){
val q = ParseQuery.getQuery<ParseObject>(OBJECT_CLASS)
if (!isOnline(c)) q.fromLocalDatastore()
if (searchQuery.isNullOrEmpty()){
q.limit = 10
} else {
q.whereMatches(OBJECT_NAME, searchQuery, "i")
}
q.findInBackground { objectList, err ->
filteredObjectsCallback(objectList as ArrayList<ParseObject>?, err)
}
}
错误行:filteredObjectsCallback(objectList as ArrayList<ParseObject>?, err)
错误:
java.lang.ClassCastException: java.util.AbstractList$SubAbstractListRandomAccess cannot be cast to java.util.ArrayList
您的转换无效,因为类型不可转换:objectList
属于 AbstractList
类型,无法像那样硬转换为 ArrayList
。
相反,使用Arrays.asList(objectList)
,我认为它有自己的实现并翻译抽象列表。