Я знаю, что я могу создать NSArray
с @[@"foo", @"bar"]
или NSDictionary
с помощью @{@0 : @"foo", @1 : @"bar"}
.
Есть ли буквальный синтаксис для создания NSMutableArray
или NSMutableDictionary
?
Я знаю, что я могу создать NSArray
с @[@"foo", @"bar"]
или NSDictionary
с помощью @{@0 : @"foo", @1 : @"bar"}
.
Есть ли буквальный синтаксис для создания NSMutableArray
или NSMutableDictionary
?
Нет. Точно так же, как нет синтаксиса для создания NSMutableString
. Переменные объекты не особенно подходят для литеральных значений.
Нет встроенного способа, но я обычно использую mutableCopy
так:
NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];
Но существует ли буквальный синтаксис для создания NSMutableArray или NSMutableDictionary?
Нет. Лучшая альтернатива:
[@[ @"foo", @"bar"] mutableCopy]
Да. Но не совсем. Взгляните на это:
NSMutableArray *list = [@[] mutableCopy];
Это создает не изменяемый массив @[]
и вызывает mutableCopy
, который возвращает NSMutableArray *
. Вместо @[]
вы можете дать любой литерал массива.
Если у вас есть вложенный литерал массивов и словарей, вы можете превратить его в полностью изменяемую версию, пройдя через NSJSONSerialization
. Например:
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];
Это немного обход, но по крайней мере вам не нужно выписывать код самостоятельно. И хорошо, что NSJSONSerialization
очень быстро.