簡體   English   中英

C#桌面應用程序和Parse.com

[英]C# desktop app and Parse.com

我有一個用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?

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

在工作代碼上,您將獲得一個特定的CreditAmount對象(實際上是一個User對象),它的objectId為“ XcaSDFrGGhX”。

第二,您嘗試使用當前用戶的objecId查詢用戶對象。 因此,我認為您要嘗試的是從當前用戶那里獲取“信用”字段? 在這種情況下,您可以直接使用CurrentUser。 ParseUser.CurrentUser始終對您可用,並且應該能夠通過類似以下方式獲取屬性:

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

首先,從您發布的代碼來看,沒有任何跡象表明您正在等待異步任務完成。 在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");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM