Filtrage de NSArray d'objets NSDictionary à l'aide de NSPredicate
J'ai un NSArray de NSDictionary objets. Je veux filtrer le tableau basé sur les clés d'un dictionnaire à l'aide de NSPredicate. J'ai été faire quelque chose comme ceci:
NSString *predicateString = [NSString stringWithFormat:@"%@ == '%@'", key, value];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateString];
NSArray *filteredResults = [allResultsArray filteredArrayUsingPredicate:predicate];
Cela fonctionne bien si on a réussi à est un mot: la Couleur, le Nom, l'Âge. Mais il ne fonctionne pas si la clé est multi-mot, comme: l'Âge, le Nom de la Personne.
Fondamentalement, toute la clé qui contient un espace, il ne fonctionne pas. J'ai essayé de mettre des guillemets simples autour de la clé dans la chaîne, tout comme elles le sont en fait sur la valeur, mais qui ne fonctionne pas non plus. Aussi essayé de guillemets, mais en vain.
Veuillez aviser sur ce. Merci à l'avance.
source d'informationauteur Bittu
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation d'une clé dynamique, vous devez utiliser le
%K
jeton au lieu de%@
. Vous ne voulez pas les guillemets autour de la valeur du jeton. Ils seront la cause de votre prédicat pour tester l'égalité contre la chaîne littérale@"%@"
au lieu de contrevalue
.Ceci est documenté dans le Prédicat Format Syntaxe de la Chaîne de guide.
Edit: Comme d'Anum Amin points,
+[NSString stringWithFormat:]
ne gère pas de prédicat formats. Vous souhaitez[NSPredicate predicateWithFormat:@"%K == %@", key, value]
à la place.Pour moi, Kevin réponse n'a pas de travail. J'ai utilisé: