2016-08-29 1 views
0

Dans mon application, j'ai une vue où j'applique des filtres. Donc, quand je reviens et que je change les filtres, mais n'appuyez pas sur le bouton Appliquer et juste sur le bouton Retour, je veux que les filtres d'origine s'appliquent juste avant que je les change.cloné NSArray est muté quand je change le tableau original

Par exemple. Filtres - Ville - A, B, C - Appliqués - Filtres A, B, C enregistrés Entré de nouveau Filtres - Ville - D, E - Bouton Précédent pressé - Regain des filtres A, B, C

Pour cela, je suis faire est juste au moment où l'viewDidLoad pour filterview est ouvert, j'économise le tableau de filtres dans un tableau de clone

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

cela fonctionne bien, mais quand je change quelque chose dans [[WMGFilterManager sharedManager] arrayForType: type]

comme supprimer certains filtres ou quelque chose, il est effectivement retiré de la matrice d'origine. Quelqu'un peut-il dire comment initier le tableau afin qu'il ne soit pas affecté par sa référence.

Répondre

0

Ajoutez l'option copyItems: YES à initWithArray. Comme dans cet exemple;

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

Vous voulez une copie profonde, pas une copie superficielle (qui copie des pointeurs).