我有一个用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答案 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");