2

最近、Android アプリで Parse ライブラリを使い始めました。saveEventually を使用してユーザーの連絡先を保存し、ParseRelation を使用して同じものをユーザーに関連付けたいと考えています。ユーザーに複数の連絡先がマッピングされているため、以下のコードを使用して保存機能を処理しています。

ParseRelation relation = ParseUser.getCurrentUser().getRelation(relationshipName);

for(int entityIndex = 0; entityIndex < entities.length;entityIndex++) { 
... 
  entity[entityIndex].saveEventually(); relation.add(entity[entityIndex]); 
...    
}

ParseUser.getCurrentUser().saveEventually();

ここでは、有効なエンティティ (ParseObject) ごとに saveEventually() を使用し、それをリレーションに追加しています。後ですべてのオブジェクトが ParseRelation に追加されたら、最後に、ParseUser に対して saveEventually() を呼び出して、すべての関係を Parse に保存します。

このアプローチは正しいですか?relationship.add(entity[entityIndex]); で例外を下回っています。

リレーション内のすべてのオブジェクトには、オブジェクト ID が必要です。

これは、ネットワーク接続の問題があり、ParseRelation が各 ParseObject の一意の objectId を取得していないことを示唆しているようですが、この saveEventual() が ParseRelation でこのシナリオをうまく処理すると想定していました。

よろしくお願いします。Parse ライブラリ バージョン 1.1.11 を使用しています

ありがとう。

4

1 に答える 1

4

ParseRelation に追加されたオブジェクトは、最初に保存する必要があります。saveEventually 呼び出しは非ブロッキングであるため、オブジェクトが ParseRelation に追加されたときに、実行が次の行に到達するまでにオブジェクトが既に保存されている可能性はほとんどありません。

オブジェクトが最初に保存されていることを確認する必要があるため、saveEventually の代わりに saveInBackground を使用する必要があります。次に、保存したオブジェクトを saveInBackground の SaveCallback 内からリレーションに追加してください。これにより、オブジェクトがリレーションに追加される前に保存されていることが保証されます。

于 2013-03-11T01:04:12.237 に答える