Я знаю, что я могу создать 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 очень быстро.