J'ai un algorithme récursif qui parcourt et trouve tous les sous-mots dans un mot (algorithme ci-dessous). Le problème avec mon algorithme est qu'il spams des données de base avec des demandes de récupération, et cela le fait fonctionner très lentement.Recherche efficace d'un objet spécifique dans les données de base
Y a-t-il une meilleure façon de le faire?, Ou suis-je bloqué avec les temps plus longs.
- (NSMutableArray *)subwordPermutations:(NSMutableArray *)permutationArray subWord: (NSMutableString *) subWord {
if ([subWord length] == 1)
return permutationArray;
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Word"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"alphaSortedWord == %@", subWord];
[fetchRequest setPredicate:predicate];
JGTAppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *managedObjectContext = appDelegate.managedObjectContext;
NSError *error;
[permutationArray addObjectsFromArray:[managedObjectContext executeFetchRequest:fetchRequest error:&error]];
if (error)
NSLog(@"%@", [error localizedDescription]);
for (int i = 0; i < [subWord length]; i++) {
NSMutableString *temp = [NSMutableString stringWithFormat:@"%@", subWord];
[temp deleteCharactersInRange:NSMakeRange(i, 1)];
permutationArray = [self subwordPermutations:permutationArray subWord:temp];
}
return permutationArray;
}
EDIT: J'ai oublié de mentionner, l'objet dans les données de base a deux propriétés de chaîne, le mot et le mot classés par ordre alphabétique.
Qu'avez-vous fait pour vérifier que vous n'appelez pas de manière répétée 'subwordPermutations:' avec le même 'subWord'? – Wain