我有一个带有 url 字符串属性和标题的历史对象。我想搜索 URL 包含搜索字符串的对象的所有历史记录,然后删除所有重复项。
例子:
我有一系列历史对象,其中 20 个都是“https://www.google.com https://www.google.com” 和 4 是 “https://www.google.com/#q=search https://www.google.com/#q=search",我想返回一个数组,其中只有一个 url 值为 " 的对象https://www.google.com https://www.google.com" 和一个 url 值 "https://www.google.com/#q=search https://www.google.com/#q=search"
这是我当前的代码,用于搜索历史记录并返回与字符串匹配的所有对象:
- (NSArray *)historyObjectsContainingQuery:(NSString *)query {
NSMutableArray *matchingObjects = [[NSMutableArray alloc] init];
HistoryManager *HM = [HistoryManager sharedInstance];
for (int i=0; i<[[HM history] count]; i++) {
//History "days"
HistoryObject *historyItem = HistoryObject([[HistoryManager sharedInstance] history][i]);
for (int o=0; o<[historyItem.objects count]; o++) {
//Each object inn each history day
HistoryObject *HO = HistoryObject(historyItem.objects[o]);
if ([HO.title rangeOfString:query options:NSCaseInsensitiveSearch].location != NSNotFound) {
//history objects with their title containing the query string
[matchingObjects addObject:HO];
}
}
}
return matchingObjects;
}
然后我记录每个 url 值:
self.foundInBookmarksAndHistory = [self HistoryObjectsContainingQuery:textField.text];
for (HistoryObject *HO in self.foundInBookmarksAndHistory) {
NSLog(@"%@",HO.url);
}
这是结果:
https://www.google.com/
2013-09-15 13:48:49.382 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.384 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.385 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.387 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.388 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.390 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.391 Flow HD[3599:60b] https://www.google.com/search?q=yahoo
2013-09-15 13:48:49.392 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.394 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.395 Flow HD[3599:60b] https://www.google.com/search?q=Sup
2013-09-15 13:48:49.397 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.398 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.400 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.402 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.404 Flow HD[3599:60b] https://www.google.com/
2013-09-15 13:48:49.405 Flow HD[3599:60b] https://www.google.com/
还有很多,我如何删除具有相同值的每个对象?这些对象不相等,但具有相等的 url。
我尝试过 NSPredicate 并使用更多的 for 循环来遍历并查找匹配的对象,但我总是留下 2 个或更多具有相同属性的相同对象。