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
4 Réponses :
pas de contrôle simplement en utilisant: strong> ou p> Ces méthodes vérifient tous les objets en utilisant isequal code>. p>
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]; code> vous donne la position
Utilisez indexofObject: code> 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: -))
Nsarray (qui est la superclasse NsmutableArray) a de nombreuses méthodes pour trouver des objets. Regardez le Documentation a>. p>
Vous pouvez soit compter sur la méthode Equals (E.G. IndexofObject :) ou fournir un bloc (E.g IndexObjectPassingTest :) qui est assez génial. P>
Il est assez courant dans l'objectif C d'utiliser la version mutable d'une classe, mais s'appuie sur des méthodes de la superclasse non mutable, il est donc toujours une bonne idée lors de la vérification de la documentation en ligne pour regarder la superclasse. P>
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
}
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];
}
Ajout de cela à Nsarray et NsmutableRay, très utile merci.
Génie!! Bonne idée. !! Travailler bien.
Par quelque chose, tu veux dire un index?