我在我的应用中启用了主题标签功能,我不确定这是否是必须实现的方式,因为我无法对其进行测试。每次我试图运行它都会崩溃。
所以我有Image类,它有关系类型的字段(标记)。 HashTags将tagName作为字符串,将img作为指向Image类的指针。
这是我开始的代码。
final ParseQuery<ParseObject> query = ParseQuery.getQuery("Image");
final ParseQuery<ParseObject> query1 = ParseQuery.getQuery("HashTags");
final ParseObject tag = ParseObject.create("HashTags");
query.getInBackground(objectId, new GetCallback<ParseObject>() {
public void done(final ParseObject object, ParseException e) {
if (e == null) {
final String hashTag = add_tag.getText().toString().trim();
String text = add_tag.getText().toString().trim();
String regexPattern = "(#\\w+)";
Pattern p = Pattern.compile(regexPattern);
Matcher m = p.matcher(text);
while (m.find()) {
final String hashtag = m.group(1);
if (hashtag.trim().matches("")) {
object.put("location", point);
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
done = true;
finish();
}
}
});
} else {
query1.whereEqualTo("name", hashtag);
问题发生在最后一行,当[query1.whereEqualTo(&#34; name&#34;,hashtag);]
我认为因为hashtag不是单一值,所以它不止一个#标签。所以它抛出了这个错误。
任何建议如何解决?
答案 0 :(得分:1)
为什么不在这个初始GetQuery中添加一个监听器,并将其余的代码放在里面,以便在完成时执行。这应该解决并发查询。
像这样的东西
query.getInBackground(new GetCallbacks(){
onComplete(){
final ParseQuery<ParseObject> query1 = ParseQuery.getQuery("HashTags");
query1.getInBackground(new GetCallbacks(){
onComplete(){
//The rest of the code.
}
});
)
我目前没有任何项目可以使代码漂亮,但这是它的要点。当您尝试查看其数据时,听起来像query1仍在执行,您应该将getInBackground匿名内部类链接在一起。通过这样做,您确保在query1完成或失败后执行其余代码。