我試圖從解析(xamarin.ios使用C#)檢索用戶數據。我正在等待使用異步方法。我的挑戰是,每當我導航到應用程序中的tableView時,應該填充有問題的用戶數據,表總是空的。C#解析如何等待,直到查詢返回值
我想等到結果與code.I的其他部分繼續之前被送回曾嘗試使用ContinueWith()函數,但經常碰到一個生成錯誤 -
Cannot implicitly convert type 'void' to System.Collections.Generic.IEnumerable<Parse.ParseObject>
我問題:
- 這是等待結果的最佳方式嗎?
- 如何解決構建錯誤?
這是我目前的執行:
public async void retrieveData(string username)
{
try
{
this.requests.ClearRequests();
refreshed = false;
var query = ParseObject.GetQuery("Requests").WhereEqualTo("username", username);
IEnumerable<ParseObject> results = await query.FindAsync().ContinueWith(t =>{
if(results != null)
{
foreach(ParseObject parseObject in results)
{
UserRequest request = new UserRequest();
request.objectId = parseObject.ObjectId;
request.make = parseObject.Get<string> ("item1");
request.model = parseObject.Get<string> ("item2");
request.year = parseObject.Get<string> ("item3");
request.userName = parseObject.Get<string> ("username");
this.requests.addRequest (request);
}
refreshed = true;
}
});
}
catch(ParseException e) {
Console.WriteLine (e.Message + e.StackTrace);
}
}
嗨Leejay,感謝您的快速回復。我明白那個。那麼如何在將屏幕顯示出來之前檢查任務是否已完成? – naffie
好吧,現在我有一個基於該響應的新問題。圖片說明:1.我在用戶登錄後立即調用AppDelegate中的retrieveData()函數。2. tableview不是初始屏幕,等待有時間返回結果。 3.導航到桌面視圖顯示項目。 3.從列表中選擇一個項目會打開一個新窗口,您可以在其中編輯/創建一個新窗口。 4.點擊保存按鈕保存數據並從堆棧中彈出這個視圖,使我們回到桌面視圖。儘管如此,tableview並沒有反映出這些變化。我應該再次調用retrieveData()函數嗎? – naffie
如果是,我應該在哪裏調用它?在我的tableViewController中,我應該在ViewWillAppear還是ViewDidLoad中工作?我目前使用ViewWillAppear,因爲ViewDidLoad只被調用一次。我相信在等待返回結果之前很久就會顯示該視圖。我已經嘗試調用保存按鈕委託內的retrieveData()。 – naffie