58 votes

Est-il une syntaxe littérale pour mutable collections?

Je sais que je peux créer un NSArray avec @[@"foo", @"bar"] ou NSDictionary avec @{@0 : @"foo", @1 : @"bar"}.

Est-il un littéral de la syntaxe pour la création d'un NSMutableArray ou NSMutableDictionary?

105voto

danielbeard Points 5306

Il n'y a pas construit dans le chemin, mais j'ai juste utilise habituellement mutableCopy comme ceci:

 NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];

19voto

Kevin Ballard Points 88866

Pas de. Tout comme la façon dont il n'y a pas une syntaxe pour la création d'un NSMutableString soit. Mutable objets ne sont pas particulièrement adaptés à des valeurs littérales.

18voto

Anne Points 16250

Mais, est-il une syntaxe littérale pour la création d'un NSMutableArray ou un NSMutableDictionary?

Pas de. Meilleure solution:

[@[ @"foo", @"bar"] mutableCopy]

3voto

meaning-matters Points 3501

Si vous avez un imbriquée littérale de tableaux et de dictionnaires, vous pouvez la transformer en un entièrement mutable version en passant par NSJSONSerialization. Par exemple:

NSArray* array = @[ @{ @"call" : @{ @"devices" : @[ @"$(devices)" ] } } ];
NSData* data   = [NSJSONSerialization dataWithJSONObject:array 
                                                 options:0 
                                                   error:nil];

NSJSONReadingOptions options = NSJSONReadingMutableContainers | 
                               NSJSONReadingMutableLeaves;
NSMutableArray* mutableArray = [NSJSONSerialization JSONObjectWithData:data 
                                                               options:options
                                                                 error:nil];

C'est un peu un détour, mais au moins vous n'avez pas à écrire le code vous-même. Et la bonne chose est qu' NSJSONSerialization est très rapide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X