Comment rechercher un NSSet ou NSArray pour un objet qui a une valeur pour une propriété spécifique?
Comment rechercher un NSSet ou NSArray pour un objet qui a une valeur pour une propriété spécifique?
Exemple: j'ai une NSSet avec 20 objets, et chaque objet a une type
de la propriété. Je veux obtenir le premier objet qui a [theObject.type isEqualToString:@"standard"]
.
Je me souviens qu'il était possible d'utiliser des prédicats d'une certaine façon pour ce genre de trucs, non?
Vous devez vous connecter pour publier un commentaire.
NB: La notion de première objet trouvé dans un NSSet n'a pas de sens puisque l'ordre des objets dans un ensemble n'est pas défini.
indexOfObjectPassingTest
semble préférable pour deux raisons: (1) Vous utilisez une méthode plutôt qu'une string (2) de Vous arrêter sur le "premier" élément vous trouver - et il n'est pas question qu'un ensemble n'est pas ordonné, vous pouvez toujours vouloir un seul élément.Vous pouvez obtenir le filtrée tableau comme Jason et Ole ont décrit, mais puisque vous voulez juste un objet, je serais utilisation
- indexOfObjectPassingTest:
(si c'est dans un tableau) ou-objectPassingTest:
(si c'est dans un jeu) et d'éviter de créer de la deuxième matrice.-objectsPassingTest:
(notez le pluriel), donc, cette idée n'est pas directement possible, si je comprends bien.Généralement, j'utilise
indexOfObjectPassingTest:
que je trouve plus pratique d'exprimer mon test de code Objective-C, plutôt que deNSPredicate
de la syntaxe. Voici un exemple simple (imaginez queintegerValue
était en fait une propriété):La sortie de ce code est: