NSMutableArray *noDup = [[NSMutableArray alloc]init];
NSMutableArray *dup = [[NSMutableArray alloc]init];
for (NSString *first in newsmall)
{
BOOL hasfound = NO;
//NSLog (@"first %@", first);
for (NSString *second in newbig)
{
//NSLog (@"second %@", second);
if ([second isEqualToString:first])
{
[dup addObject:first];
hasfound = YES;
break;
}
}
if (!hasfound)
{
//NSLog (@"has not found %@", first);
[noDup addObject:first];
}
}
newsmall是一个只有字符串的小数组,newbig是一个只有字符串的大数组。该应用程序关闭自己没有任何调试警告。 NSLog
显示“第一”和“第二”,但没有“未找到”。怎么样?
答案 0 :(得分:3)
哦,duhhhhh。我现在明白你的问题。
颠倒阵列的比较顺序。如果你想在newsmall中找不到newbig中的哪些字符串,请先查看newbig,同时查看newsbll中newbig中存在哪个枚举字。
代码看起来像这样(只有两行代码已经改变):
NSMutableArray *noDup = [[NSMutableArray alloc]init];
NSMutableArray *dup = [[NSMutableArray alloc]init];
for (NSString *first in newbig)
{
BOOL hasfound = NO;
//NSLog (@"first %@", first);
for (NSString *second in newsmall)
{
//NSLog (@"second %@", second);
if ([second isEqualToString:first])
{
[dup addObject:first];
hasfound = YES;
break;
}
}
if (!hasfound)
{
//NSLog (@"has not found %@", first);
[noDup addObject:first];
}
}
看到细微差别?
答案 1 :(得分:0)
你的内部循环可以用containsObject:方法替换,如下所示:
for (NSString *first in newbig) {
if ([newsmall containsObject:first]) {
[dup addObject:first];
} else {
[noDup addObject:first];
}
}
此外,将newsmall转换为NSSet将提高速度。