Vérifier si un tableau contient un certain objet (iOS)
J'ai besoin de vérifier si un tableau contient un certain objet, et si elle le fait, supprimer cet objet. Si elle n'a pas cet objet, une fonction est suposed à l'ajouter dans le tableau. Le problème est que l'objet est toujours ajouté car la vérification de la déclaration retourne toujours false.
Voici ma fonction actuelle:
- (void) myFunction:(NSString *)parameter {
if (![myMutableArray containsObject:parameter]) {
[myMutableArray addObject:parameter];
NSLog(@"%@ added", parameter);
} else {
[myMutableArray removeObject:parameter];
NSLog(@"%@ deleted", parameter);
}
}
source d'informationauteur iosdevrocks
Vous devez vous connecter pour publier un commentaire.
containsObject appelle isEqual sur chaque objet dans les tableaux. Quel type d'objet vous intéresse? Si c'est un objet personnalisé, de remplacer et de mettre en œuvre la méthode isEqual.
J'imagine que vous essayez de vérifier la valeur de l'objet, mais containsObject est fait appel isEqual qui est de comparer la référence à l'objet, et non pas de sa valeur réelle.
containsObject:
Vous devez d'abord vérifier le type de données ou un objet que vous ajoutez dans cette
myMutableArray
. En fonction de votre méthode de vérification dans mutable tableau pour le type de chaîne que vous avez passé argumentparameter
. Il peut être possible que vous êtes contenant int ou float array.Il peut y être question de type coulée de votre tableau.Si votre CHAÎNE de type de données, alors vous pouvez utiliser une autre méthode comme ceci.
}
Espère que cela va vous aider. Si votre objet n'est pas de type NSString alors vous avez besoin de convertir.
Vous devez mettre en œuvre
isEqual:
dans votre classe personnalisée. Par défaut, les deux objets ne sont identiques si elles partagent la même référence.Assurez-vous également d'initialiser votre mutable tableau avant de l'utiliser.
MODIFIER:
Il semble que votre tableau de nom de variable sont le plus probablement une erreur de frappe.
myMutableArray
myMutbaleArray
Vous avez probablement oublié d'initialiser votre
NSMutableArray
. Si non initialisé, vous envoyezaddObject
des messages à unnil
objet, qui n'a aucun effet, et le tableau ne contient que vous avez ajouté précédemment...Bien sûr, si le tableau est
nil
puis lecontains
vérifier renverra toujours false. Selon l'Objectif-C docs:Et 0 est faux