从Objective-C中的for循环迭代中获取数组

时间:2012-01-06 06:17:09

标签: iphone objective-c ios

我正在使用此代码获取JSON的值,

    NSDictionary *dict = [list objectAtIndex: 0];

vehicleList = [dict objectForKey: @"assets"];

NSString *identity = [dict objectForKey: @"identity"];

for (NSUInteger index = 0; index < [vehicleList count]; index++) {

    itemDict = [vehicleList objectAtIndex: index];

    NSMutableArray *listVehicles = [itemDict objectForKey: @"identity"];

    NSLog(@"Assets: %@", listVehicles);
}

它正常工作并显示确切的结果

Assets: 34DL3611
Assets: 34GF0512
Assets: 34HH1734
Assets: 34HH1736
Assets: 34YCJ15

我想使用这些值来填充数组,以便我将该数组用于tableview。

2 个答案:

答案 0 :(得分:3)

将您的listVehicles设为NSMutableArray并执行[listVehicles addObject:[itemDict objectForKey:@"identity"]],而不是您当前在循环中执行的操作。

答案 1 :(得分:1)

如果我正在阅读您所说的内容,我建议您稍微改变一下for循环,以提高可读性并简化方法。

NSDictionary * dict = [list objectAtIndex: 0];
NSArray * vehicles  = [dict objectForKey:@"assets"];


NSMutableArray * listVehicles = [NSMutableArray arrayWithCapacity:vehicles.count];


for (NSDictionary * currentDictionary in vehicles)
{
    NSString * identity = [currentDictionary objectForKey:@"identity"];

    [listVehicles addObject:identity];
    NSLog(@"Added %@ to the array, which is now contains %d objects", identity, listVehicles.count);
}

这是一个很好的内置功能,可以防止您需要处理计数并调用objectForIndexAt:

我只是快速输入,但我很确定它会做你正在做的事情。如果没有,我仍然鼓励你调整它并使用那种迭代风格,我想你会喜欢它。