objective c - ¿Hay una sintaxis literal para colecciones mutables?
objective-c cocoa (5)
Sé que puedo crear un NSArray con @[@"foo", @"bar"] o un NSDictionary con @{@0 : @"foo", @1 : @"bar"} .
¿Hay una sintaxis literal para crear un NSMutableArray o un NSMutableDictionary ?
Pero, ¿hay una sintaxis literal para crear un NSMutableArray o un NSMutableDictionary?
No. La mejor alternativa:
[@[ @"foo", @"bar"] mutableCopy]
No hay un camino integrado, pero usualmente uso mutableCopy esta manera:
NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];
No. Así como tampoco hay una sintaxis para crear un NSMutableString . Los objetos mutables no son particularmente adecuados para los valores literales.
Sí. Pero no del todo. Mira esto;
NSMutableArray *list = [@[] mutableCopy];
Esto crea una matriz no mutable @[] y llama a mutableCopy que devuelve una NSMutableArray * . En lugar de @[] , puede dar cualquier matriz literal.
Si tiene un literal anidado de matrices y diccionarios, puede convertirlo en una versión completamente mutable NSJSONSerialization . Por ejemplo:
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];
Es un poco desviado, pero al menos no tiene que escribir el código usted mismo. Y lo bueno es que NSJSONSerialization es muy rápido.