Xamarin.Android 和解析

Xamarin.Android and Parse

我正在用 C# 编写一个应用程序,Xamarin.I 在 backend.I 使用 Parse 当前卡在用户单击注册按钮时我的应用程序检查具有相同 phone 解析中的数字 database.Ideally 如果应用程序发现应用程序敬酒 "cannot signup"。如果找不到用户,它会为用户注册。 下面是我使用的代码。

    try {

                    var person = await(from userp in ParseUser.Query where userp.Get<string>("Phone")==phone.Text.ToString() select userp).FindAsync();
                    if(person!=null){Toast.MakeText(this,"A user with same mobile number already exist and can't signup",ToastLength.Long).Show();}
                    else{
                    signupprogress = new ProgressDialog (this);
                    signupprogress.SetTitle ("Please Wait");
                    signupprogress.SetMessage ("Signing you up!!");
                    signupprogress.SetCancelable (true);
                    signupprogress.SetProgressStyle (ProgressDialogStyle.Spinner);
                    signupprogress.Show ();
                    ParseUser user = new ParseUser ();
                    user ["Name"] = name.Text.ToString ();
                    user.Username = email.Text.ToString ();
                    user.Email = email.Text.ToString ();
                    user.Password = password.Text;
                    user ["Address"] = Address.Text.ToString ();
                    user ["Phone"] = phone.Text.ToString ();
                    await user.SignUpAsync ();
                    signupprogress.Dismiss ();
                    var inte = new Intent (this, typeof(LogIn));
                    StartActivity (inte);
                    Toast.MakeText (this, "Signed Up successfully.Please Login", ToastLength.Short).Show ();
                    }       

                } catch (Exception ep) {
                    Toast.MakeText (this, "Some erroroccured "+ ep.Message, ToastLength.Long).Show ();

                }

我面临的问题是:

  1. 我可以多次注册同一个号码。如果人反对 不为空,如果我的应用找到人,我认为应该是这种情况 使用相同的 phone 编号,应用程序应显示吐司。
  2. 如果我使用数据库中不存在的不同号码,那么我将无法注册。

请提前help.Thanks。

FindAsync 永远不会 return null。它总是 return 是 Task<IEnumerable<T>>。而且这个任务的结果也永远不会是 null。如果没有找到任何内容,它将 return 一个空列表。
因为您使用的是 await 您实际上不必处理该任务。您只需检查它是否 return 编辑了任何对象。

那么你想要做的是:

var persons = await (from userp in ParseUser.Query
                     where userp.Get<string>("Phone")==phone.Text.ToString()
                     select userp).FindAsync();

if(!persons.Any())
{
    Toast.MakeText(this,
                   "A user with same mobile number already exist and can't signup",
                   ToastLength.Long)
         .Show();
}