2017-07-30 8 views
0

のparseObjectアレイリストに格納されている文字列の単一のインスタンスの削除:私はパースに配列フィールドから文字列の単一のインスタンスを削除しようとしている

final ParseObject post = mPosts.get(position); 
List<String> repliedToByList = post.getList("repliedToBy"); // Retrieve current list 
ParseUser currentUser = ParseUser.getCurrentUser().getObjectId(); 
repliedToByList.remove(currentUserObjectId); // Remove first instance of specified objectid 
post.remove("repliedToBy"); // Clear the entire list 
post.addAllUnique("repliedToBy", Collections.singletonList(repliedToByList)); // Add the new list 

その文字列は、現在のユーザーのOBJECTIDですが、ユーザが "ポスト" に応答するときには、次のような、追加された:

post.addAll("repliedToBy", Collections.singletonList(ParseUser.getCurrentUser().getObjectId())); 

は、例えば、アレイが含ま:

["1RtqEgy1ct","f4qEWY8UOM","f4qEWY8UOM"] 

f4qEWY8UOMという1つのインスタンスを削除する方法はありますか?代わりに、増分/減分を使用してすべてを行うことですが、それは私にとって理想的ではありません。

// Increment replyCount 
postObject.increment("replyCount", 1); 
postObject.saveInBackground(); 

しかし、そこにAndroidの解析SDKの明記デクリメント方法と間違って何か、すなわちpostObject.increment("replyCount", -1)があるので、私は次のことを試してみました:私のreplyCountの増分

+0

リストをArrayListのインスタンスに変換し、List.remove()を呼び出すのではなく、そのエントリを繰り返し処理します。 –

+0

サーバ上で、配列として変数を格納してから、文字列を探して繰り返しました。そのインデックスの値を配列から削除してループから抜け出し、add/removeメソッドを使用するのではなく、正しいキーのオブジェクトの値として変数を保存します。 これは、データベースが配列のインデックスを再作成する可能性があります。このキーを使用しているインデックスの数によっては時間がかかることがあります。 –

答えて

0

は簡単です

代わりのリストを保存しますobjectIdsをリストに入れ、そのサイズを数えれば、前のreplyCountを常に取り出して1を減算し、次に新しいput呼び出しを保存することによって、単純に増減します:

関連する問題