我知道我可以使用NSArray
创建@[@"foo", @"bar"]
或NSDictionary
创建@{@0 : @"foo", @1 : @"bar"}
。
是否有用于创建NSMutableArray
或NSMutableDictionary
的文字语法?
答案 0 :(得分:96)
没有内置方式,但我通常只使用mutableCopy
这样:
NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];
答案 1 :(得分:17)
没有。就像没有创建NSMutableString
的语法一样。可变对象并不特别适合文字值。
答案 2 :(得分:16)
但是,是否有创建NSMutableArray或NSMutableDictionary的字面语法?
没有。最佳选择:
[@[ @"foo", @"bar"] mutableCopy]
答案 3 :(得分:8)
是。但并不完全。看看这个;
NSMutableArray *list = [@[] mutableCopy];
这会创建一个不可变的数组@[]
并调用mutableCopy
,返回NSMutableArray *
。代替@[]
,您可以提供任何数组文字。
答案 4 :(得分: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
非常快。