Comment comparer deux NSIndexPaths?
Je suis à la recherche d'un moyen de tester si les chemins d'accès index sont égaux, et par l'égalité, je veux dire l'égalité à tous les niveaux? J'ai essayé compare:
mais il semble ne pas fonctionner, j'ai toujours vrai lorsque comparé avec NSOrderedSame
même si les indices ne sont certainement pas les mêmes.
- Merci de poster votre code à l'aide de comparer: méthode.
[itemCategoryIndexPath compare:indexPath]==NSOrderedSame
assez simple, en fait je manque qch?- Radu, dans votre commentaire précédent, tu veux dire que
compare:
œuvres, à l'opposé comme vous l'avez mentionné dans votre question ?
Vous devez vous connecter pour publier un commentaire.
Presque tous Objective-C les objets peuvent être comparés à l'aide de la
isEqual:
méthode. Ainsi, pour tester l'égalité, vous avez juste besoin[itemCategoryIndexPath isEqual:indexPath]
, et vous êtes bon pour aller. Maintenant, cela fonctionne parce queNSObject
implémenteisEqual:
, de sorte que tous les objets ont automatiquement la méthode, mais si une certaine classe de ne pas les surcharger,isEqual:
sera juste comparer les pointeurs d'objet.Dans le cas de
NSIndexPath
, depuis leisEqual:
méthode a été remplacé, vous pouvez comparer les objets que vous avez été d'attendre. Mais si je devais écrire une nouvelle classe,MyObject
et de ne pas surcharger la méthode,[instanceOfMyObject isEqual:anotherInstanceOfMyObject]
serait effectivement le même queinstanceOfMyObject == anotherInstanceOfMyObject
.Vous pouvez en lire plus dans le NSObject Protocole De Référence.
isEqual:
sur les objets, et de laisser la classe elle-même traiter le problème pour vous.Dans Swift vous utilisez
==
à comparer, si NSIndexPaths sont les mêmes.Swift utilise
==
pour les comparaisons de la valeur.===
est utilisé pour détecter quand les deux variables de référence exactement la même instance (emplacement dans la mémoire etc). Fait intéressant, laindexPath1 === indexPath2
montre que NSIndexPath est construit à partager la même instance toutes les fois que les valeurs (section de ligne) match, de sorte que même si vous étiez en comparant les cas, il serait toujours valide.Cette réponse presque complètement de ce fantastique AFIN de répondre à de drewag et reproduit ici puisque c'est le premier résultat Google pour "comparer indexpath" et nous ne sommes pas censés il suffit de coller un lien.