我有一个递归算法,它遍历并找到一个单词中的所有子单词(下面的算法)。我的算法的问题在于,它使用 fetch 请求向核心数据发送垃圾邮件,这使得它运行非常缓慢。
有没有更好的方法来做到这一点?还是我坚持更长的时间。
- (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;
}
编辑:我忘了提,核心数据中的对象有两个字符串属性,单词和按字母顺序排序的单词。