我有一個遞歸算法,可以查找並找到一個單詞中的所有子單詞(下面的算法)。我的算法存在的問題是它利用提取請求來散佈核心數據,這使得運行速度非常緩慢。在覈心數據中有效查找特定對象
有沒有更好的方法來做到這一點?或者我堅持了更長的時間。
- (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;
}
編輯:我忘了提及,核心數據中的對象有兩個字符串屬性,單詞和按字母順序排序的單詞。
你做了什麼來檢查你沒有反覆調用'subwordPermutations:'具有相同的'subWord'? – Wain