iphone: как я могу синхронизировать содержимое 2 NSMutableArrays? - PullRequest
1 голос
/ 08 сентября 2010

В настоящее время у меня есть NSMutableArray, в котором хранится коллекция объектов Video.

Каждый объект Video имеет идентификатор и заголовок.

У меня также есть еще один NSMutableArray видеообъектов, сгенерированных в результате анализа вызова API XML.

Когда пользователь нажимает кнопку «Синхронизировать», я хочу, чтобы система могла определить минимальное количество необходимых операций (удаление и добавление видео) для синхронизации обоих списков.

Каков оптимальный способ сделать это? Определяет ли Objective-C какие-либо методы для этого? Если нет, то есть ли специальный алгоритм, который я могу реализовать?

(Лично я бы предпочел не проходить по всем пунктам в обоих списках)

Ответы [ 2 ]

0 голосов
/ 08 сентября 2010

Вы можете использовать -removeObjectsInArray:, чтобы получить различия, если вы применили isEqual: и hash разумно:

NSMutableArray *old = ...;
NSMutableArray *new = ...;

NSMutableArray *toAdd    = [new mutableCopy];
NSMutableArray *toDelete = [old mutableCopy];
[toAdd    removeObjectsInArray:old];
[toDelete removeObjectsInArray:new];

Обратите внимание, что словарь или набор будут более естественными с такими данными.

0 голосов
/ 08 сентября 2010

Предполагая, что вы только добавляете и удаляете видео, у вас может быть два NSMutableDictionaries, один для удаления, а другой для добавления видео. Когда вы добавляете видео, вы добавляете запись в ADDDictionary, когда вы удаляете ее, сначала проверяете, отображается ли она как запись в ADDDictionay, и если вы ее удаляете, в противном случае вы добавляете запись в DELDictionary.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...