比较2个NSArray有更快的方法吗?我需要知道两个数组中是否存在缺刻并得到它们的索引。
看我的方法我认为我们可以更快地做点什么
-(void)classPseudo
{
AppDelegate *app = [[UIApplication sharedApplication]delegate];
NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *fullFileName = [NSString stringWithFormat:@"%@/contactArray.txt", documentsPath];
NSMutableArray *newOnlineArray = [[NSMutableArray alloc]initWithContentsOfFile:fullFileName];
NSUInteger count = [newOnlineArray count];
NSUInteger count2 = [app.messagePseudo count];
for (NSUInteger index = 0; index < count; index++)
{
for (NSUInteger index2 = 0; index2 < count2; index2++)
{
dict1= [newOnlineArray objectAtIndex:index];
st1 = [dict1 objectForKey:@"pseudo"];
dict2= [app.messagePseudo objectAtIndex:index2];
st2 = [dict2 objectForKey:@"expediteur"];
if ([st2 isEqualToString:st1])
{
NSLog(@"YESS %d",index);
}
else {
NSLog(@"NOOOON");
}
}
}
}
任何帮助都将被提供.Thanx提前。
答案 0 :(得分:1)
您没有非常清楚地解释您的问题。例如,您尚未解释所涉及的数据结构。 (显然是两个字典数组。)你还没有准确地说出你想要的输出。而对于那些不讲法语的人来说,并不是很清楚,“nicks”在一个案例中对应于“伪”而在另一个案例中对应于“expediteur”。您尚未解释预期的数据集。例如,每个伪预期会在第一个数组中出现多次或几次?第二个是加速的。
无论如何,您可以为索引集构建一个“伪”值的映射。然后,迭代第二个数组并在地图中查找加速器。
NSMutableDictionary* pseudoIndexes = [NSMutableDictionary dictionary];
[newOnlineArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
NSString* pseudo = [obj objectForKey:@"pseudo"];
NSMutableIndexSet* indexes = [pseudoIndexes objectForKey:pseudo];
if (!indexes)
{
indexes = [NSMutableIndexSet indexSet];
[pseudoIndexes setObject:indexes forKey:pseudo];
}
[indexes addIndex:idx];
}];
[app.messagePseudo enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
NSString* expediteur = [obj objectForKey:@"expediteur"];
NSIndexSet* indexes = [pseudoIndexes objectForKey:expediteur];
NSLog(@"For expediteur #%d '%@', pseudo indexes %@", idx, expediteur, indexes);
}];