J'ai plusieurs objets configurés dans les données de base, dont l'un est "Deck" et l'autre "Card" . Les "cartes" ont plusieurs relations numérotées, y compris "id". "Deck" a une relation un-à-plusieurs avec les cartes.Obtention de la valeur minimale d'un attribut dans un NSSet à partir d'une relation un-à-plusieurs dans les données de base
Quelle est la meilleure façon de trouver la carte dans une plate-forme qui a la valeur minimale d'un attribut numéroté, tel que id?
Il est clair que je peux obtenir la liste des cartes comme ceci:
NSSet *cardList = self.cards;
Je pense que je peux construire une expression pour obtenir un minimum comme celui-ci:
NSExpression *keyPathExpression = [NSExpression expressionForKeyPath:@"id"];
NSExpression *minExpression = [NSExpression expressionForFunction:@"min:"
arguments:[NSArray arrayWithObject:keyPathExpression]];
Mais je ne peux pas tout à fait Suss comment utiliser cette expression pour extraire la carte avec la valeur minimum de id (ou juste la valeur minimale de id).
Pour référence ultérieure, j'écrit ce qui suit deux fonctions basées sur les conseils de Barry Wark: - (NSNumber *) numberForLeast: (NSString *) leastId { \t NSString * KeyPath = [NSString stringWithFormat: @ cartes "@. min.% @ ", leastId]; \t NSNumber * minId = [self valueForKeyPath: chemin de clé]; \t \t \t return minId; } - (NSSet *) cardsForLeast: (NSString *) leastId { \t \t NSString * KeyPath = [NSString stringWithFormat: @ ". @ Cartes min% @", leastId]; \t NSNumber * minId = [self valueForKeyPath: chemin de clé]; NSSet * minCards = [self.cards filteredSetUsingPredicate: [NSPredicate prédicatWithFormat: @ "id ==% @", minId]]; \t \t \t retour minCards; } –