我正在Android中创建一个应用程序,允许用户搜索在应用程序中注册的其他用户。
要求每个用户输入一组详细信息,例如"出生日期"在进入app之前。这些数据直接存储在用户类中。
我的要求是,如果用户输入用户名并进行搜索,他必须能够查看该特定用户的所有可用详细信息。 例如:假设每个用户都必须有一个电子邮件(字符串)和出生日期(字符串)。用户搜索姓名" John"。该查询应该是什么,以便我可以使用用户名" John"来检索用户的电子邮件和DOB。
Parse.com指南中提供的数据是
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username", name);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
Toast.makeText(getApplicationContext(),"Query Success",Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),"Query Not Successful",Toast.LENGTH_LONG).show();
}
}
});
我需要做出哪些改变才能实现目标?
如何访问存储在对象中的字符串?
如果我从查询中检索多条记录,我该如何处理呢?
我已按此编辑了我的查询
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereMatches("username", name);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> objects, ParseException e) {
if (e == null) {
for(ParseUser singleobject:objects){
String mail=singleobject.get("email").toString();
Toast.makeText(getApplicationContext(),mail,Toast.LENGTH_LONG).show();}
} else {
Toast.makeText(getApplicationContext(),"Query Not Successful",Toast.LENGTH_LONG).show();
}
}
});
没有生成Toast,但执行查询时没有任何异常。
循环语句是正确的还是我做错了?
答案 0 :(得分:2)
1.我需要做出哪些改变才能实现目标?
代码看起来正确地向ParseUser查询用户名的完全匹配。要更松散地匹配,请考虑使用whereMatches
2.如何访问存储在对象中的字符串?
Parse.Object根据属性类型提供getString()
以及其他“get”变体。
3.如果我从查询中退出多条记录,我该如何处理呢?
findInBackground
完成处理程序的“objects”参数是一个包含零个或多个查询匹配项的数组。像对待任何其他人一样处理这个数组。