Xamarin.Android and Parse

本文关键字:Parse and Android Xamarin | 更新日期: 2023-09-27 17:56:29

我正在用C#和Xamarin编写一个应用程序。我目前陷入了当用户单击注册按钮时,我的应用程序会在解析数据库中检查具有相同电话号码的用户。理想情况下,如果应用程序找到应用程序,则会干杯"无法注册"。如果找不到用户,则会注册用户。下面是我使用的代码。

    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. 我可以多次使用相同的号码注册。 如果有人反对不为空,我认为如果我的应用程序找到人,应该如此使用相同的电话号码,应用应显示 Toast。
  2. 如果我使用数据库中没有的其他号码,那么我将无法注册。

请帮忙。提前谢谢。

Xamarin.Android and Parse

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

所以你想做的是这样的:

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();
}