У меня есть NSMutableArray
, который заполнен объектами строк. Для простоты мы скажем, что объекты - это человек, а каждый объект человека содержит информацию об этом человеке.Сравните NSArray с NSMutableArray, добавляя дельта-объекты в NSMutableArray
Таким образом, у меня будет NSMutableArray, заполняемый с объектами лицо:
person.firstName
person.lastName
person.age
person.height
И так далее.
Исходный источник данных поступает с веб-сервера и заполняется, когда мое приложение загружается и завершает его инициализацию сервером. Периодически мое приложение опрашивает сервер для получения последнего списка имен.
В настоящее время я создаю NSArray
набора результатов, опорожнение NSMutableArray
, а затем вновь заселять NSMutableArray
с NSArray
результатов перед разрушением NSArray
объекта.
Это кажется мне неэффективным на нескольких уровнях, а также представляет проблему с потерей ссылок на строки таблицы, с которыми я могу работать, но для этого я могу создать больше работы для себя.
Неэффективность, похоже, заключается в том, что я должен иметь возможность сравнивать два массива и заканчивать фильтрацией NSArray
. Затем я мог бы добавить отфильтрованный набор в NSMutableArray
. Это означало бы, что я могу просто добавить новые данные в NSMutableArray
вместо того, чтобы выбрасывать все и повторно заполнять.
И наоборот, мне нужно будет сделать тот же фильтр в обратном порядке, чтобы увидеть, есть ли записи, требующие удаления с NSMutableArray
.
Есть ли способ сделать это более эффективным способом? Я что-то пропустил в документах, где говорится о более простой технике?
У меня возникла проблема, когда я опорожняю NSMutableArray
и заново заполняю, что любые таблицы ссылок теряют выбранное состояние строки. Я могу отследить его и повторно выбрать, но моя теория заключается в том, что использование какой-либо формы сравнения и добавления объектов и удаление объектов вместо обращения к целому массиву в одном блоке может означать, что я сохраняю ссылку на строку (при условии, что элемент не является конечно, удалены).
Любые предложения или помощь очень ценятся.
Update
было бы так же быстро, чтобы сделать быстрое перечисление над каждым сравнением каждого элемента строки, как я иду? Похоже, что это дорогостоящая операция, но с последним быстрым кодом перечисления может быть довольно эффективным ...
Решение
Я заканчивал тем, что с предложением Abizem в. Создание изменчивой копии массива и копия объекта выглядит немного более быстрым, чем использование решения sbooth при работе с большими наборами данных. Оба отлично работали, я просто получил больше преимуществ, используя подход с изменяемой копией. Сказав это, я открыл глаза на NSSet, где раньше не смотрел.
Спасибо за отзыв.
Почему бы не проверить его и не увидеть? Не преждевременно оптимизируйте. –
В процессе :-) Я обновлю свои выводы *, но * если кто-то это сделал и знает ... ну ... :-) – Hooligancat