Je suis en train de supprimer une instance unique d'une chaîne à partir d'un champ Array Parse:Suppression d'une instance unique d'une chaîne stockée dans une liste Array 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
Cette chaîne est objectId de l'utilisateur actuel, qui est ajouté lorsqu'un utilisateur répond à un "post", en tant que tel:
post.addAll("repliedToBy", Collections.singletonList(ParseUser.getCurrentUser().getObjectId()));
Par exemple, le tableau contient:
["1RtqEgy1ct","f4qEWY8UOM","f4qEWY8UOM"]
Est-il possible de supprimer une seule instance de f4qEWY8UOM
? L'alternative est de tout faire en utilisant des incréments/décréments, mais ce n'est pas idéal pour moi.
convertir la liste à une instance de ArrayList et itérer sur ses entrées au lieu d'appeler List.remove() –
Sur le serveur, j'ai stocké le tableau en tant que variable, puis itéré par la recherche de ma chaîne, et si je trouvais il a supprimé la valeur de cet index du tableau + sort de la boucle, puis a stocké la variable en tant que valeur de l'objet pour la clé droite, plutôt que d'utiliser leurs méthodes add/remove. Le revers de la médaille est que cela entraîne probablement la réindexation de la base de données par la base de données, ce qui peut prendre un certain temps en fonction du nombre d'index que vous utilisez pour cette clé. –