我使用以下代码搜索Data Browser
。列为Location
和Weather
,类名为Nowcast
。
如果我的Data Browser
中包含纽约且天气为"sunny"
,则TextView showWeather
会显示"The weather in New York is sunny".
但是,如果我搜索洛杉矶并且它不在Data Browser
中,则会显示"The weather in Los Angeles is null"
,而根据代码,它根本不应输入if
条件。我做错了什么?
public void getData(){
searchText = searchTextView.getText().toString();
ParseQuery<ParseObject> query = ParseQuery.getQuery("Nowcast");
query.whereEqualTo("Location", searchText);
query.findInBackground(new FindCallback<ParseObject>() {
public void done(List<ParseObject> object, ParseException e) {
if (e == null) {
for (ParseObject weatherObject : object) {
weatherData = weatherObject.getString("Weather");
}
showWeather.setText("The weather in " + searchTextToString + " is " + weatherData);
} else {
Toast.makeText(NowcastSearch.this, "No such location found",Toast.LENGTH_LONG).show();
}
}
});
}
答案 0 :(得分:1)
ParseException e
此异常表示在将整个数据解析到对象时是否存在问题。因此,您可以通过null检查来检查解析操作是否成功。
解析您的数据没有异常。这意味着你没有损坏的数据或其他东西。
您只是获取null对象,因为没有关于它的数据。你应该检查你的&#34; weatherData&#34;。
答案 1 :(得分:1)
然而根据代码
它根本不应该输入if条件
仅当ParseException
不为空时才应输入。换句话说,只有当你的查询出现问题时(例如你为字段条件传递了错误的 type 参数),它才应该输入if条件(它的第一个分支)。 / p>
您的查询没有问题。所以没有抛出异常。不是单个记录与您的条件匹配的查询仍然是有效查询。 object
列表只是空的,但整个过程没有任何错误。