我有一个组合的数组需要在另一个字典数组中进行搜索。
字典数组如下:
以下是组合数组,数组名称为self.arrayOfSearchCombinationsFormed。
字典数组如下:
self.listOfAllContacts
({
name = "William";
recordId = 541;
},
{
name = "Soan";
recordId = 541;
},
{
name = "kamal";
recordId = 541;
},
{
name = "Elisia";
recordId = 541;
},
{
name = "Ben";
recordId = 541;
},
{
name = "Loki";
recordId = 541;
},
{
name = "Fraser";
recordId = 541;
});
以下是组合数组,数组名称为self.arrayOfSearchCombinationsFormed。
<__NSArrayM 0x1702518b0>(
ABCD,
JK,
AND,
MIKE,
ELI,
STEV,
FRASE,
WIILIA
)
目前的工作代码:
self.filteredContacts = [[NSMutableArray alloc] init];
NSArray *arrayToTraversed = [[NSArray alloc] initWithArray:self.arrayOfSearchCombinationsFormed];
for(NSString *combination in arrayToTraversed){
NSPredicate *predicateInsideLoop = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@", combination];
NSArray *filteredContactByName = [self.listOfAllContacts filteredArrayUsingPredicate:predicateInsideLoop];
if([filteredContactByName count]>0){
[self.filteredContacts addObjectsFromArray:filteredContactByName];
}
else{
[self.arrayOfSearchCombinationsFormed removeObject:combination];
}
}
目前这个解决方案效率低下,且占用了大量内存。任何帮助将不胜感激。
同时请注意,字典中未找到的任何组合都需要从组合数组中删除。
因此,我的问题是我想要在内存分配方面搜索名称的最有效方法。以便它使用最少的内存。