是否有可变集合文字的语法?(Is there a literal syntax for mutabl

2019-07-31 13:44发布

我知道我可以创建一个NSArray@[@"foo", @"bar"]NSDictionary@{@0 : @"foo", @1 : @"bar"}

是否有用于创建一个文本语法NSMutableArrayNSMutableDictionary

Answer 1:

第正如怎么没有用于创建一个语法NSMutableString无论是。 可变对象没有特别适合于文字值。



Answer 2:

没有一个内置的方式,但我只是平时使用mutableCopy这样的:

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


Answer 3:

但是,有没有创造一个NSMutableArray或一个NSMutableDictionary文字的语法?

号最佳选择:

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


Answer 4:

是。 但并不完全。 看看这个;

NSMutableArray *list = [@[] mutableCopy];

这产生了非可变数组@[]并调用mutableCopy返回一个NSMutableArray * 。 代替@[]你可以给任何文字阵列。



Answer 5:

如果你有一个嵌套的字面数组和字典,你可以通过去变成一个完全可变的版本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是非常快的。



文章来源: Is there a literal syntax for mutable collections?