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 ();
}
我面临的问题是:
- 我可以多次注册同一个号码。如果人反对
不为空,如果我的应用找到人,我认为应该是这种情况
使用相同的 phone 编号,应用程序应显示吐司。
- 如果我使用数据库中不存在的不同号码,那么我将无法注册。
请提前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();
}
我正在用 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 ();
}
我面临的问题是:
- 我可以多次注册同一个号码。如果人反对 不为空,如果我的应用找到人,我认为应该是这种情况 使用相同的 phone 编号,应用程序应显示吐司。
- 如果我使用数据库中不存在的不同号码,那么我将无法注册。
请提前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();
}