私は、単語内のすべてのサブワードを通過して見つける再帰アルゴリズムを持っています (以下のアルゴリズム)。私のアルゴリズムの問題は、フェッチ リクエストでコア データをスパム送信することであり、これにより実行が非常に遅くなります。
これを行うためのより良い方法はありますか?、または私はより長い時間で立ち往生しています.
- (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;
}
編集: 言い忘れましたが、コア データのオブジェクトには、単語とアルファベット順に並べ替えられた単語の 2 つの文字列プロパティがあります。