Je dois ajouter Tout d'abord j'ai créé un sélectionnéfiltersbyuser est un dictionnaire comme ceci: p> et pour chaque clé: valeur dans ce dictionnaire, je crée un nouveau nsmutableddiction comme ceci: p> et ce nouveau nsdicdiction code> dans
nsmutableArray code>.
nsmutabledictionnerdictionner (code> avec une valeur de clé d'une autre structure comme ceci: p>
Nsmutabledictiondicastural Code> Ajouté dans
NsmutableArraRay Code> Comme ceci: P>
{
key: category_id,
value: XXX
},
{
key: sort,
value: last_updated_asc
},
{
key: status,
value: rejected_by_seller
}
3 Réponses :
Essayez de Parce que lorsque vous [Nsmutableddictionnercoc] init] init] code> dans la boucle pour puis ajoutez des données.
init code> hors de la boucle, chaque fois qu'il va Allez à la boucle intérieure et la touche est la même chose, il va écraser avec une nouvelle valeur. Si vous
init code> dans la boucle, il en créera un nouveau. p>
Ajout d'un dictionnaire à la matrice ne pas em> copie le dictionnaire. Il stocke une référence à l'objet (dictionnaire) à la matrice, une référence au dictionnaire identique est ajoutée à chaque fois. p>
Écraser le contenu du dictionnaire modifie le dictionnaire identique, qui est stocké plusieurs fois dans le tableau. P>
Vous devez créer un nouveau dictionnaire à chaque fois. Il n'y a aucune raison de créer un mutable. P>
Comme les commentaires ont signalé que votre problème est dû à la sémantique EM> de collections de l'objectif-C, c'est-à-dire qu'ils contiennent des références aux objets existants et pas em> les copies. Donc, si vous ajoutez le même Cependant, vous pouvez le rendre plus simple et éviter tout le problème. Vous êtes déjà indexation mais ça reste vous laisse avec l'allocation, que vous pouvez supprimer à l'aide d'un littéral dictionnaire em>: p> maintenant là que l'allocation est traitée automatiquement par le compilateur et vous Obtenez un Vous pouvez constater que l'utilisation de dictionnaire (et de tableau) littéraux vous aide à éviter les erreurs d'affectation et à la création d'une mutable. structures quand ils ne sont pas nécessaires. Htth p> p> nsmutabledictionner (code> plusieurs fois à plusieurs fois à un
nsmutableArray code> Comme votre code vous finissez avec chaque élément du tableau étant une référence à la même em> dictionnaire. La solution simple déjà suggérée consiste à affecter le dictionnaire à l'intérieur de votre boucle:
sélectionnéfiltersbyuser code>, vous pouvez également indexer
filters_data code> de la même manière qui vous donne: p>
NSDictionary code>. L'option finale consiste à supprimer
filtres_date code> tout à fait: p>
Essayez de
[NSDictionary Alloc] init] code> dans la boucle FOR, puis ajoutez des données.
Dans la boucle? Mais j'y introche de la boucle. J'ai créé un nouveau NSMutabledictionner pour chaque élément, puis ajouté à une autre structure? @Niravkotecha
Oui dans la boucle.
Lorsque vous êtes hors de la boucle, chaque fois qu'il ira à la boucle intérieure et que la touche est la même, elle va écraser avec une nouvelle valeur. Si vous introduisez dans la boucle, cela créera un nouveau.
Merci. Ce n'était mes problèmes. J'ai besoin de créer un nsmutabledictionner en boucle. @Niravkotecha