ParseQuery查找对象为null

时间:2015-12-09 09:30:13

标签: android parse-platform

我使用以下代码搜索Data Browser。列为LocationWeather,类名为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();
            }
        }
    });
}

2 个答案:

答案 0 :(得分:1)

ParseException e

此异常表示在将整个数据解析到对象时是否存在问题。因此,您可以通过null检查来检查解析操作是否成功。

解析您的数据没有异常。这意味着你没有损坏的数据或其他东西。

您只是获取null对象,因为没有关于它的数据。你应该检查你的&#34; weatherData&#34;。

答案 1 :(得分:1)

  

然而根据代码

它根本不应该输入if条件

仅当ParseException不为空时才应输入。换句话说,只有当你的查询出现问题时(例如你为字段条件传递了错误的 type 参数),它才应该输入if条件(它的第一个分支)。 / p>

您的查询没有问题。所以没有抛出异常。不是单个记录与您的条件匹配的查询仍然是有效查询。 object列表只是空的,但整个过程没有任何错误。