2016-08-29 2 views
0

В моем приложении у меня есть вид, где я применяю фильтры. Поэтому, когда я возвращаюсь и меняю фильтры, но не нажимаю кнопку «Применить» и только кнопку «Назад», я хочу, чтобы исходные фильтры применялись только до тех пор, пока я не изменил их сейчас.клонированный NSArray получает мутированный, когда я меняю исходный массив

Например. Фильтры - Город - A, B, C - Примененные - Сохраненные фильтры A, B, C Пришли снова Фильтры - Город - D, E - Задняя кнопка нажата - Восстановить фильтры A, B, C

Для этого я делать только при открытии viewdidload для filterview, я сохранить массив фильтров в массив клон

clonedFiltersData = [[NSMutableArray alloc] initWithArray:[[WMGFilterManager sharedManager] arrayForType:type]]; 

это работает нормально, но когда я изменить что-то в [[WMGFilterManager sharedManager] arrayForType: тип]

как удалить некоторые фильтры или что-то еще, он фактически удаляется из исходного массива. Может ли кто-нибудь сказать, как инициировать массив, чтобы его ссылка не затрагивалась.

ответ

0

Добавьте параметр copyItems: YES в initWithArray. Как и в этом примере;

NSArray *deepCopyArray=[[NSArray alloc] initWithArray:someArray copyItems:YES]; 

Вы хотите получить глубокую копию, а не мелкую (которая копирует указатели).

Смежные вопросы