11
votes

Vérifiez si quelque chose existe dans un nsmutableArray

J'ai un nsmutableRay qui peut contenir plusieurs objets. Je voudrais vérifier si un objet existe, et si oui, modifiez-le. Je me demandais de le vérifier. Je pensais que cela fonctionnerait:

if ([[[self.myLibrary objectAtIndex:1] subObject] objectAtIndex:1]) // do something


1 commentaires

Par quelque chose, tu veux dire un index?


4 Réponses :


48
votes

pas de contrôle simplement en utilisant: xxx

ou xxx

Ces méthodes vérifient tous les objets en utilisant isequal .


par exemple: xxx


6 commentaires

Je vois. Donc, il n'y a pas de moyen de vérifier une position spécifique dans un nsmutableArray alors.


JUP [myarray indexObject: myObject]; vous donne la position


Utilisez indexofObject: et vérifiez le résultat pour être égal à l'index que vous voulez


Upvot. Avoir une modification en attente avec un exemple de code. J'espère que ça ne vous dérange pas @vince!


@Cerception - pas de problème! J'étais sur le point de me changer. Mais vous devez vous rendre vite pour moi;)


Merci beaucoup. M'a pris 2 jours pour obtenir ceci: -))




3
votes

En supposant que l'objet que vous utilisez pour rechercher et que l'objet réel de la matrice correspond exactement à la même instance, et non à deux objets différents qui sont égaux selon un ISARIAL: code>, vous pouvez Faites ceci:

NSUInteger index = [array indexOfObject:objectToSearchFor];
if (index != NSNotFound) {
    id objectInArray = [array objectAtIndex:index];
    // modify objectInArray
}


0 commentaires

13
votes

S'il s'agit d'un modèle que vous utilisez beaucoup, vous pouvez ajouter une catégorie à Nsarray appelé quelque chose comme SafeObjecteDIndex: code>, qui prend un index, les limites vérifient-elles en interne:

-(id)safeObjectAtIndex:(NSUInteger)index {
  if (index >= [self count])
    return nil;
  return [self objectAtIndex:index];
}


2 commentaires

Ajout de cela à Nsarray et NsmutableRay, très utile merci.


Génie!! Bonne idée. !! Travailler bien.