从iOS中的多维数组中迭代

时间:2016-06-27 09:49:10

标签: ios objective-c arrays uitableview

如何从iOS中的这个多维数组进行迭代? 此数据来自JSON

(
        (
        "burger meal",
        "getImage.ashx?id=1",
        150,
        300,
        "get a free burger"
    ),
        (
        "chinese combo",
        "getImage.ashx?id=2",
        350,
        700,
        "get  a combo free"
    ),
        (
        "cheeese cake",
        "getImage.ashx?id=3",
        350,
        700,
        "get a cake free with meal"
    )
)

我需要在索引3处使用对象,例如在UITableView中= 150,350,350。

我试过这个

NSArray *array = jsonArray;

for (NSArray *newArray in array) { 
    [newArray addObjectFromArray:array];
}

2 个答案:

答案 0 :(得分:2)

试试这个,在这段代码中,arrResult包含你在特定位置需要的所有值。

NSArray *array = jsonArray;
NSMutableArray *arrResult = [[NSMutableArray alloc]init];

for (NSArray *newArray in array) { 
        [arrResult addObject:[newArray objectAtIndex:2]];

}

答案 1 :(得分:1)

这很简单。让TableView为您迭代数组。您的tableView已经在迭代,不会通过自己迭代数组来增加开销。如果你这样做,你就会浪费处理能力。

首先,修改您的numberOfRowsInSection委托方法,如下所示:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return  [jsonArray count]; //Provide your json array here.
}

然后您必须使用cellForRowAtIndexPath方法执行此操作:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //Do everything that you need to do to get the cell. Here we will deal with only string retrieval from json array.
    if(jsonArray count]>indexPath.row){
        NSArray *innerArray = [jsonArray objectAtIndex:indexPath.row]; //You got the inner array
        if(innerArray count]>2){
             NSString *yourDesiredString = [innerArray objectAtIndex:2]; //You got the string. Use it now as you wish. It will be 150 for the first cell, 350 for the second and 350 for the third one as well.
         }

    }

}

我没有在这里添加任何例外检查,这是你自己要做的事情。我已经添加了基本检查以防止在无关数据的情况下崩溃,你应该扩展它。

假设您希望将此字符串设置为每个单元格。如果我误解了您的问题或者您需要提问,请发表评论