有一个可变的集合的文字语法?
我知道我可以使用@[@"foo", @"bar"]
创buildNSArray
,或者使用@{@0 : @"foo", @1 : @"bar"}
创buildNSDictionary
。
有创build一个NSMutableArray
或NSMutableDictionary
的文字语法?
不,就像没有创buildNSMutableString
的语法一样。 可变对象不是特别适合字面值。
没有内置的方式,但我通常使用mutableCopy
像这样:
NSMutableArray *array = [@[ @"1", @"2", @"3" ] mutableCopy];
但是,是否有创buildNSMutableArray或NSMutableDictionary的文字语法?
不是最好的select:
[@[ @"foo", @"bar"] mutableCopy]
是。 但不完全。 看看这个;
NSMutableArray *list = [@[] mutableCopy];
这将创build一个不可变数组@[]
并调用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];
这有点绕路,但至less你不必自己写代码。 而且, NSJSONSerialization
速度非常快。