C#桌面应用和Parse.com

时间:2014-05-04 08:55:15

标签: c# parse-platform

我有一个用C#编写的桌面应用程序(不是Windows 8应用程序)正在与Parse数据库通信,创建一个新帐户,登录并将信息传输到用户对象没有问题。

然而,当涉及到获取信息时,问题就在于此。

此代码有效(编辑)并返回Credit值:

ParseQuery<ParseObject> query = ParseObject.GetQuery("User");
ParseObject CreditAmount = query.GetAsync("XcaSDFrGGhX");

int Credit = CreditAmount.Get<int>("Credit");

此代码不起作用:

ParseQuery<ParseObject> query = ParseObject.GetQuery("User");
ParseObject CreditAmount = query.GetAsync(ParseUser.CurrentUser.ObjectID);

int Credit = CreditAmount.Get<int>("Credit");

抛出异常:Object with the given objectId found.

Parse.ParseException.ErrorCode.ObjectNotFound

建议找到用户objectID,但有什么不对,为什么?

此外,如果Parse.User可以声明为全局变量,那将更有利。如何在上面的例子中完成它被声明为sub?

中的局部Var

2 个答案:

答案 0 :(得分:0)

我不知道C#,但这是我的看法:

在工作代码上,您将获得一个特定的CreditAmount对象(实际上是一个User对象),该对象的objectId为&#34; XcaSDFrGGhX&#34;。

在第二步,您尝试使用当前用户的objecId查询用户对象。所以,我认为你要做的就是获得&#34; Credit&#34;来自当前用户的字段?如果是这种情况,您可以直接使用CurrentUser。 ParseUser.CurrentUser总是可以使用,并且应该能够获得如下所示的属性:

int Credit = ParseUser.CurrentUser.Get<int>("Credit");

答案 1 :(得分:0)

首先,从您发布的代码开始,没有迹象表明您正在等待异步任务完成。在C#中,您将使用await关键字,以便在异步操作完成之前不会执行以下代码行。

// NOTE: the 'await' keyword here after the '='
ParseObject user = await query.GetAsync(ParseUser.CurrentUser.ObjectID);
// this code will be delayed until the async-get is done
int credit = user.Get<int>("Credit");

其次,如果您想使用当前用户,则已加载ParseUser.CurrentUser。如果需要,您可以使用FetchAsync()告诉它更新,但通常您只需使用它:

// no query needed
int credit = ParseUser.CurrentUser.Get<int>("Credit");