Suppression d'un objet de NSMutableArray
Je suis tombé sur le raccourci suivantes dans la mise en place d'une boucle for (raccourci par rapport au manuel des exemples que je l'utilise):
for (Item *i in items){ ... }
Par opposition à la plus longue:
for (NSInteger i = 0; i < [items count]; i++){ ... } //think that's right
Si je suis en utilisant la version la plus courte, est-il un moyen de supprimer l'élément en cours de itéré (c'est à dire "je")? Ou ai-je besoin pour utiliser le format plus long?
source d'informationauteur Ben Packard
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas supprimer les objets de tableau tandis que rapide énumération:
De toute façon, pourquoi avez-vous besoin de vous changer conteneur lors de l'énumération? Pensez à stocker les éléments qui doivent être supprimés et les supprimer de votre conteneur à l'aide de
removeObjectsInArray:
ouremoveObjectsAtIndexes:
méthode.Juste ajouter un mot-clé
break;
après la suppression de l'article...Objective-C collection ne doit pas être modifiée au cours de l'énumération.
Vous pouvez utiliser cette variante de supprimer des objets de collection:
La boucle est un "for-each" boucle en Objective C.
*i est un pointeur vers le direct de l'élément dans les éléments de Tableau (la plupart du temps ce sera NSMutableArray).
De cette façon, vous pouvez fonctionner directement sur l'élément:
Cela (devrait) travail - je suis actuellement ne fonctionne pas sur mon Mac et ne peux pas le vérifier.
Cependant il se peut que l'Objective-C Empêche la suppression d'objets lors de l'itération sur la collection (qui est assez commun dans la plupart des langues).
J'utilise ce code: