56

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

是否有用于创建 anNSMutableArray或 an的文字语法NSMutableDictionary

4

5 回答 5

104

没有内置的方式,但我通常是mutableCopy这样使用的:

NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];
于 2012-09-14T01:39:19.913 回答
18

不,就像没有用于创建NSMutableString两者的语法一样。可变对象并不特别适合文字值。

于 2012-09-14T01:36:16.187 回答
17

但是,是否有用于创建 NSMutableArray 或 NSMutableDictionary 的文字语法?

没有。最好的选择:

[@[ @"foo", @"bar"] mutableCopy]
于 2012-09-14T01:39:20.370 回答
9

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

NSMutableArray *list = [@[] mutableCopy];

这将创建一个非可变数组@[]并调用mutableCopy返回一个NSMutableArray *. 代替@[],您可以提供任何数组文字。

于 2015-08-03T05:37:49.560 回答
3

如果您有数组和字典的嵌套文字,您可以通过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速度非常快。

于 2013-04-29T20:42:24.627 回答