2

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() をオーバーライドしようとしましたが、成功しませんでした。何か案は?

ありがとう!

4

1 に答える 1

2

わかりましたので、解決しました。私が理解したことから、私がやろうとしていたことは、解析ライブラリを使用することはできません。

まず、deleteAllInBackground()オブジェクトの固定も解除されるため、unpinAllInBackground()は必要ありません。

問題は、 を使用してオブジェクトを固定していたitem.pin(MyApplication.ALL_ITEMS)ため、固定を解除する唯一の方法は、 を使用してピン名を渡すことitem.unpinInBackground(MyApplication.ALL_ITEMS)です。ただし、バッチ バージョンでは、アイテムのコレクションとピン名の両方を引数として渡すことはできません。したがって、名前付きピンを使用してアイテムをバッチでアンピンすることはできません。

ピン名を渡してオブジェクトのピンを個別に解除することになりました。私が持っている大きな不満はitem.unpinInBackground()、ピン名なしで実行しても例外がスローされないため、問題が何であるかを認識していなかったことです。

于 2015-03-26T17:02:23.500 に答える