Сравните два NSArrays и верните количество различий - PullRequest
8 голосов
/ 30 мая 2010

Как взять два NSArrays, сравнить их, а затем вернуть количество различий, предпочтительно количество различных объектов, например:

Массив 1: один два три

Массив 2: два четыре один

Я бы хотел, чтобы это вернуло "1"

Ответы [ 2 ]

23 голосов
/ 30 мая 2010

Вы можете сделать это, используя промежуточный NSMutableArray :

NSArray *array1 = [NSArray arrayWithObjects:@"One", @"Two", @"Three", nil];
NSArray *array2 = [NSArray arrayWithObjects:@"Two", @"Four", @"One", nil];
NSMutableArray *intermediate = [NSMutableArray arrayWithArray:array1];
[intermediate removeObjectsInArray:array2];
NSUInteger difference = [intermediate count];

Таким образом будут удалены только общие элементы.

2 голосов
/ 16 августа 2012

Я обнаружил, что в ответе выше не учитываются массивы различного размера. Если вы сделаете это, как указано выше, вы должны проверить, какой массив array.count меньше и

[largerArray removeObjectsInArray:shorterArray];

OR

Я сделал их оба NSSets, а затем сравнил.

[set1 isEqualToSet:set2];

Таким образом, размер и порядок обрабатываются правильно! (Мне не нужно было знать количество различий)

...