2010-07-20 18 views
0

J'essaie de faire une liste de lettres "pondérée" lorsque les mots sont créés. J'ai une liste massive de mots dans un NSArray. Par exemple, je suis en train d'essayer d'acquérir un nouveau NSArray rempli seulement de la 3e lettre de tous les mots basés sur les deux premières lettres entrées.NSPredicate pour filtrer le tableau de mots au tableau de lettres

Jusqu'à présent, je ... ont

NSArray *filteredArray; 
if (currentWordSize == 0) { 
    filteredArray = wordDictionary 
} 
else { 
    NSPredicate *filter = [NSPredicate predicateWithFormat:@"SELF beginswith[cd] %@", filterString]; 
    filteredArray = [wordDictionary filteredArrayUsingPredicate:filter]; 
} 

Et ça fonctionne tout bon pour mettre des mots entiers dans le tableau filtré, mais ce n'est pas exactement ce que j'ai besoin. Quelqu'un peut-il me montrer un moyen de simplement remplir le filteredArray avec juste les 1ère, 2ème ou 3ème lettres d'un NSString aléatoire du wordDictionary?

EDIT: clarifié ma question.

Répondre

2

NSPredicate n'est pas ce que vous allez vouloir utiliser pour cela. NSPredicate évalue simplement les objets en fonction d'un ou plusieurs critères et renvoie un résultat oui/non, de sorte qu'il ne peut pas être utilisé pour faire des choses qui manipulent réellement les éléments testés.

pour saisir la troisième lettre de chaque chaîne dans un tableau et mettre les résultats dans un nouveau tableau ressemblerait à quelque chose comme ceci:

NSArray* wordDictionary; 
NSMutableArray* filteredArray = [[NSMutableArray alloc] init]; 

for (NSString* aString in wordDictionary) 
{ 
    if ([aString length] > 2) 
     [filteredArray addObject:[aString substringWithRange:NSMakeRange(2, 1)]]; 
    else 
     [filteredArray addObject:@""]; //there is no third letter 
} 
+0

Je aurait enlever le reste :) – willcodejavaforfood

+2

Si vous voulez prendre ce un pas de plus, et rendre la pondération plus explicite, vous pouvez utiliser un 'NSCountedSet' pour garder une trace du nombre de fois que chaque lettre est utilisée dans cette position: http://developer.apple.com/library/ios/#documentation/ Cocoa/Référence/Fondation/Classes/NSCountedSet_Class/Référence/Reference.html –