gpt4 book ai didi

java - 从解析对象查询回调返回对象数据

转载 作者:行者123 更新时间:2023-11-29 20:55:34 24 4
gpt4 key购买 nike

我是 Java/android 编程的新手,我被困在 Parse.com 回调中。

有一个方法 (method1) 请求当前用户拥有的对象的 objectId。它通过调用另一个方法 (method2) 来实现这一点,该方法包含一个查询,该查询使用回调从数据浏览器中拉出一个对象。

我设法编写了所有代码,但我被困在方法 2 的回调中。我希望将对象数据返回到方法 1,但这似乎是不可能的,因为回调类型 (void)。

我现在也知道如何让方法的其余部分在执行之前等待回调返回。如果有人能帮助我,我将不胜感激。

这是我的代码:

public void method1(){
String objectId = null;

objectId = QueryStatisticObjectId("Age");

Log.i(TAG, "objectId returned to method = " + objectId);
}



public String QueryStatisticObjectId(final String statistic){
ParseQuery<ParseObject> query = ParseQuery.getQuery("Statistics");
query.whereEqualTo("user", ParseUser.getCurrentUser());
query.whereEqualTo("statistic", statistic);
query.getFirstInBackground(new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if (e == null){
//We have data!
String objectId = object.getObjectId();
return;
}
else
{
//Something went wrong!?!
e.printStackTrace();
}
}
});

最佳答案

因此,在 iOS 或 Android 中使用 Parse 无法实现您尝试执行的操作。我认为它可能会按照您希望的方式在 .NET 上运行(使用 Await 关键字)。

相反,问问自己:

  1. 您为什么要以这种方式构建您的类(class)?
  2. 为什么将值返回到原始方法很重要?
  3. 仅仅是因为您想要一种可回收的方法吗?
  4. 是因为您想在更有意义的方法上下文中处理值吗?

如果是这样,尝试这样的事情:

public void method1() {
QueryStatisticObjectId("Age", new GetCallback<ParseObject>() {
@Override
public void done(ParseObject object, ParseException e) {
if (e == null) {
String objectId = object.getObjectId();
Log.i(TAG, "objectId returned to method = " + objectId);
} else {
Log.i(TAG, "objectId not found");
}
}
});
}

public void QueryStatisticObjectId(final String statistic, GetCallback<ParseObject> callback) {
ParseQuery<ParseObject> query = ParseQuery.getQuery("Statistics");
query.whereEqualTo("user", ParseUser.getCurrentUser());
query.whereEqualTo("statistic", statistic);
query.getFirstInBackground(callback);
}

通过这种方式,您可以在有意义的上下文 (method1()) 中编写代码来处理返回的结果,同时还可以根据需要重复使用查询方法。此外,与@JimW 的回答相反,它不使用同步网络调用,这也让您有机会保持应用程序的 UI 响应。

关于java - 从解析对象查询回调返回对象数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27891514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com