我在我的Android应用中使用Parse.com。我正在制作一个协作购物清单,允许用户标记要删除的项目(它们变成灰色),但是当我按下同步按钮(并且有可用的网络)时,它们才会被实际删除。目前,对象从解析数据库中删除,但不从本地数据存储区中删除。我正在尝试这个:
ParseQuery<ShoppingItem> queryDeletes = ShoppingItem.getQuery();
queryDeletes.fromPin(MyApplication.ALL_ITEMS);
queryDeletes.whereEqualTo("isDeleted", true);
queryDeletes.findInBackground(new FindCallback<ShoppingItem>() {
@Override
public void done(final List<ShoppingItem> items, ParseException e) {
if (e == null) {
ShoppingItem.deleteAllInBackground(items, new DeleteCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
ShoppingItem.unpinAllInBackground(items, new DeleteCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
if (!isFinishing()) {
shoppingListAdapter.loadObjects(); // update the list view
}
}
}
});
}
}
});
}
}
});
}
已经尝试清除应用数据并覆盖ShoppingItem中的equals()但没有成功。有什么想法吗?
谢谢!
答案 0 :(得分:1)
好的,所以我解决了。根据我的理解,使用解析库无法实现我的目的。
首先,deleteAllInBackground()
也会取消对象,因此不需要unpinAllInBackground()
。
问题是我使用item.pin(MyApplication.ALL_ITEMS)
固定对象,因此取消固定它们的唯一方法是使用item.unpinInBackground(MyApplication.ALL_ITEMS)
传递引脚名称。但是,批处理版本不允许将项目集合和引脚名称作为参数传递。因此,无法使用命名引脚批量取消固定项目。
我最终取消了单独传递引脚名称的对象。我抱怨的是,在没有引脚名称的情况下执行item.unpinInBackground()
不会引发异常,因此我不知道问题是什么。