从Parse.Query分配一个对象到一个全局变量
问题描述:
我试图从解析中访问一个查询内部的一个查询,但是当查询结束时它会被销毁。正如你在下面的代码中看到的那样,我将它输出到控制台,它确实有效,但是如果我尝试将它分配给一个变量,然后使用它,它将返回null。任何帮助,将不胜感激。从Parse.Query分配一个对象到一个全局变量
ParseQuery<ParseObject> query = ParseQuery.getQuery("Hospitales");
query.whereEqualTo("Codigo", id);
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("score", "The getFirst request failed.");
} else {
Log.d("id", "Retrieved the object.");
String status = object.getString("Hospital");
m2Status = object.getString("Hospital");
System.out.println("Hospital: " + status);
System.out.println(status + m2Status);
}
}
});
答
所以,基本上,你的问题似乎是你正在运行一个异步查询,并试图在查询返回之前访问该变量。
下面是你可以设置你的代码中使用的变量推迟,直到你可以确信你有一个值,实际使用:
private void runQuery() {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Hospitales");
query.whereEqualTo("Codigo", id);
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object == null) {
Log.d("score", "The getFirst request failed.");
// You don't have a good value to use, so figure
// out a way to handle that scenario
} else {
Log.d("id", "Retrieved the object.");
String status = object.getString("Hospital");
m2Status = object.getString("Hospital");
System.out.println("Hospital: " + status);
System.out.println(status + m2Status);
// You have a good value to use, so
// now you can actually use it
afterQueryProcessing();
}
}
});
}
private void afterQueryProcessing() {
// You can access m2Status here reliably,
// assuming you only call this method
// as shown above, but you should still
// use defensive programming
if (m2Status != null) {
// Now you know you have a value to use...
}
}
+0
谢谢大家的帮助!你真的很具描述性,我得到了我需要的工作:D! – 2015-01-27 22:07:31
+0
@MauricioSilva太棒了!乐于帮助!不断努力尽可能地学习! – mbm29414 2015-01-27 22:12:48
我看你是如何分配“医院”给一个变量,但什么是'm2Status',它在哪里声明,以及如何在另一个上下文中访问它? – mbm29414 2015-01-27 01:17:56
我将它在类的顶部(但在类中)指定为:受保护的字符串m2Status。我试图在Query之外访问它,并将其添加到具有user.put(“Hospital”,m2Status)的新用户; 当我运行它时,当在查询外部使用m2Status时它会给出一个空值,但是当我在里面使用它确实会给出我需要的值。 – 2015-01-27 01:37:07
你确定你只是试图访问它的查询填充后的值?我假设你意识到查询异步运行,对吧? – mbm29414 2015-01-27 01:39:54