Я хочу добавить объекты из NSArray * small, если их нет в NSArray * big.
Но вывод показывает, что объекты из * small, которые существуют в * big, добавляются. Я пробовал x isEqualToString: x == NO
(я знаю, что это не то же самое, что range.location и hasPrefix, но странно, что даже hiya -> добавляется, когда он существует в * big)
и range.location = NSNotFound
и x hasPrefix: x == NO
. Но ни один из них не работает. Почему?
Кстати, * small содержит меньше объектов, чем * big. Имеет ли это значение?
Коды ниже:
NSArray *big = [[NSArray alloc] initWithObjects:@"hello ->hi", @"hiya ->", @"hiya ->whatever", @"hiya -> howdy", @"good day ->hello", @"nope, but ->no", @"however ->what", @"May ->april", @"mai ->", nil];
NSArray *small = [[NSArray alloc] initWithObjects: @"match", @"hiya ->",@"hiya ->", @"hiya ->",@"nope, but ->", @"however ->", @"May ->", nil];
NSString *same;
NSMutableArray *newWords = [[NSMutableArray alloc]init];
newWords = [NSMutableArray arrayWithArray: big];
NSLog (@"big: %@", big);
int i;
for (i = 0; i<[small count]; i++)
{
same = [small objectAtIndex:i];
for (NSString *s in big)
{
//NSRange ran = [s rangeOfString:same];
//if (ran.location =NSNotFound)
//if ([s isEqualToString: same] == NO)
if ([s hasPrefix:same] == NO)
{
[newWords addObject:same];
break;
}
}
}
Вывод показывает:
2011-10-17 19:21:56.855 scanner2[4018:207] newWords: (
"hello ->hi",
"hiya ->",
"hiya ->whatever",
"hiya -> howdy",
"good day ->hello",
"nope, but ->no",
"however ->what",
"May ->april",
"mai ->",
match,
"hiya ->",
"hiya ->",
"hiya ->",
"nope, but ->",
"however ->",
"May ->"
)
edit: я даже пытался if ([x compare: x ] !=NSOrderedSame)
, но только hiya ->
добавляется трижды в * newWords.