Ich versuche, eine einzelne Instanz einer Zeichenfolge aus einem Array Feld in Parse zu entfernen:entfernt eine einzelne Instanz eines String gespeichert in einer ParseObject Array List
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
Dieser String ist der aktuelle objectId des Benutzers, die hinzugefügt wird, wenn ein Benutzer auf einen "post" antwortet, wie zum Beispiel:
post.addAll("repliedToBy", Collections.singletonList(ParseUser.getCurrentUser().getObjectId()));
zum Beispiel kann das Array enthält:
["1RtqEgy1ct","f4qEWY8UOM","f4qEWY8UOM"]
Gibt es eine Möglichkeit, nur eine einzige Instanz von f4qEWY8UOM
zu entfernen? Die Alternative ist, alles mit Inkrementen/Dekrementen zu machen, aber das ist nicht ideal für mich.
konvertieren Sie die Liste in eine Instanz von ArrayList und iterieren über ihre Einträge anstelle von List.remove() –
Auf dem Server habe ich das Array als eine Variable gespeichert, dann iteriert durch die Suche nach meiner Zeichenfolge, und wenn ich gefunden Sie löschte den Wert dieses Indexes aus dem Array + brach aus der Schleife und speicherte die Variable dann als den Wert des Objekts für den richtigen Schlüssel, anstatt ihre add/remove-Methoden zu verwenden. Nachteil ist, dass dies wahrscheinlich dazu führt, dass die Datenbank das Array neu indiziert, was je nach Anzahl der Indizes, die Sie mit diesem Schlüssel verwenden, eine Weile dauern kann. –