【问题标题】:for/in loop 2d array with one value ios does not return array but valuefor/in 循环具有一个值的二维数组 ios 不返回数组而是返回值
【发布时间】:2014-08-03 07:39:36
【问题描述】:

我想从二维数组转换为一维数组。我有一个像这样的数组:@[@["+9390902"]] 我试图通过执行for/in 循环和常规for 循环来使它像这样:@["+9390902"],但不知何故我最终得到了@ 987654325@ 而不是嵌套在数组中的字符串。我做错了什么?

基本上

for (NSArray *child in array) {

NSLog(@"Child array: %@",child);

}

返回 @"+9390902" 而不是 @[@"+9390902"],而这根本不是预期的。

【问题讨论】:

  • 在你的 for 循环中,试试这个: NSLog(@"%@",NSStringFromClass([child class]));如果它在控制台中记录 NSArray,那么您可以确定它是一个 NSArray。
  • 用创建和填充array的实际代码更新您的问题。

标签: ios objective-c arrays nsarray multidimensional-array


【解决方案1】:

不确定这是否能回答您的问题,但这里有一个概述:

假设你有数组:

NSArray *array = @[@[@"+9390902"]];

(这也可以表示为):

NSArray *array = @[
    @[
        @"+9390902"
    ]
];

您可以像这样迭代这些值:

for (NSArray *child in array) {

    NSLog(@"Child array: %@",child);

}

然后,您可以以相同的方式遍历子节点。

for (NSString *string in child) {

    NSLog(@"Found string: %@",string);

}

如果您知道这些值存在,也可以使用下标直接访问它们:

NSString *string = array[0][0];

【讨论】:

  • 您能否显示数组的创建位置,如果您 NSLog 数组会发生什么,以及当您 NSLog 孩子时会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-25
  • 2016-04-14
  • 2019-02-06
  • 2019-12-24
  • 2013-08-25
相关资源
最近更新 更多