我试图在没有NSDictionary的情况下获得如下列数组。 它运作良好。
但我想知道objective-c literal是否支持此功能。
有这样的字面意思吗?
例如array [] [0] ?, array [*] [0],array [?] [0]等。?
NSArray *array1 = @[@"AAa", @"BBB", @"CCC"];
NSArray *array2 = @[@"AAb", @"BBB", @"CCC"];
NSArray *array3 = @[@"AAc", @"BBB", @"CCC"];
array = @[array1, array2, array3];
NSArray *result;
result = [self getColumnArray:0]; // <- get array's [*][0]
NSLog(@"result is : %@", result);
result = [self getColumnArray:2]; // <- get array's [*][2]
NSLog(@"result is : %@", result);
- (NSArray *)getColumnArray:(NSUInteger)index {
NSMutableArray *resultArray = [NSMutableArray array];
for (NSArray *item in array) {
[resultArray addObject:item[index]];
}
return resultArray;
}
Excuted result :
2012-10-29 16:00:24.550 testButton[28245:11303] result is : (
AAa,
AAb,
AAc
)
2012-10-29 16:00:24.552 testButton[28245:11303] result is : (
CCC,
CCC,
CCC
)
答案 0 :(得分:0)
是的可能......请参阅解决方案的链接 http://clang.llvm.org/docs/ObjectiveCLiterals.html
答案 1 :(得分:0)
以下代码可以使用:
NSArray *arr = @[ @[@"A", @"B"], @[@"C", @"D"]];
NSLog(@"%@", array[0][0]); // Logs 'A'
因此,你可以做这样的事情来达到你想要的效果:
// Log the 0 element of each NSArray within your primary array.
NSArray *primaryArray = @[ @[@"A", @"1"], @[@"A", @"2"], @[@"A", @"3"] ];
for (int i = 0; i < array.count; i++) {
NSLog(@"%@", primaryArray[i][0]); // Logs "AAA"
}
// Or you can use a for (NSArray *arr in primaryArray) fast-enumeration loop.
据我所知,没有语法:
NSLog(@"%@", primaryArray[*][0]); // Could log "AAA"
这有几个原因。
%@
(其他用途的类似原因,例如你如何return primaryArray[*][0]
?)*
已经表示C中的指针,?
三元运算符中使用了?:
。简而言之,快速枚举循环是执行所需操作的最佳方式,嵌套[i][0]
框语法有助于其可读性。我同意通配符语法在某些情况下会非常方便(例如日志记录和枚举),但我认为全面简洁地实现它会非常困难。另外,由于他们为了^
超载了块,他们的可用运算符已经用完了!