Parse SDK ドキュメントでは、別のオブジェクトを指すオブジェクトを固定すると、そのターゲット オブジェクトも固定されると記載されています: https://parse.com/docs/android_guide#localdatastore-pin
保存と同様に、クラウドからフェッチされた場合、gameScore が指すすべてのオブジェクトとファイルが再帰的に保存されます。オブジェクトへの変更を保存するか、Parse から新しい変更をフェッチするたびに、データストア内のコピーが自動的に更新されるため、心配する必要はありません。
ただし、最初のオブジェクトとそれが指しているオブジェクトの固定を後でどのように解除するかは記載されていません。(基本的にはトランザクションを元に戻す)、クラウドからそれらのオブジェクトを削除しますか?
あなたは:
A.) 最初のオブジェクトを参照するすべてのオブジェクトの固定を解除し、DeleteEventually を使用してターゲット オブジェクトを削除します。
また
B.) 最初にすべてのオブジェクトの固定を解除すると、対象のオブジェクトが自動的に削除されますか?
また、オブジェクトがデータストアに固定されていて、クラウドにも保存されている (固定を解除しない) 場合、固定を解除するとクラウドからも削除されますか? または、最初に固定を解除してから削除するか、削除/固定を解除する必要がありますか?
編集:
Fosco の回答を理解した場合、次のようなことを行う必要があります。
final ParseQuery<ParseObject> findMoves = ParseQuery.getQuery("bjjMatchMoves");
findMoves.fromPin("BJJMove");
findMoves.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(final List<ParseObject> moves, final com.parse.ParseException e) {
if (e == null) {
// First, unpin all objects that reference the main object, which should Remove the main object as well.
ParseObject.unpinAllInBackground("BJJMove", moves, new DeleteCallback() {
public void done(ParseException e) {
if (e != null) {
// There was some error.
return;
}
// objects have Now been unpinned. Now Delete them from the cloud
ParseObject.deleteAllInBackground(moves, new DeleteCallback() {
public void done(ParseException e) {
if (e != null) {
// There was some error.
return;
}
// objects have Now been unpinned and deleted, remove the main object from the cloud
}
});
}
});
}
}
});