将数组的元素值加载到另一个数组Xcode Objective-C

时间:2012-09-11 07:46:09

标签: objective-c xcode arrays

在这里,我从cityName1数组中获取带有Piscataway,Iselin,Broklyn等城市名称的tgpList1,我需要将这些值放入名为item5的数组中。

上述迭代获取了133条记录。以下代码仅存储最后一条记录的cityName1,而不是整个循环内的城市名称列表。

我尝试了很多方法,但我遗漏了一些东西。

tgpList1是一个数组。 tgpDAO是一个包含两个对象NSString *airportCodeNSString *cityName

的NSObject
NSArray *item5 = [[NSArray alloc]init]; 
for (int currentIndex=0; currentIndex<[tgpList1 count]; currentIndex++)
{
    tgpDAO *tgpTable = (tgpDAO *)[self.tgpList1 objectAtIndex:currentIndex];
    NSLog(@"The array values are %@",tgpList1);

    NSString *cityName1 = tgpTable.cityName;

    item5 =[NSArray arrayWithObjects:cityName1, nil];
}

3 个答案:

答案 0 :(得分:0)

而不是

item5 =[NSArray arrayWithObjects:cityName1, nil];

使用

[item5 addObject:cityName1];

有更多方法可以实现这一目标。然而,这是为了这个目的设计的,并且从我的视角中最“可读”。

如果您需要在清除item5的内容之前再调用

[item5 removeAllObjects]; 
在for循环之前

你在做什么:arrayWithObjects总是创建一个新的数组,该数组由作为aguments传递给它的对象组成。如果您不使用ARC,那么您将使用代码创建一些严重的内存泄漏,因为arrayWithObjects在每个循环和下一个循环上创建并保留一个对象,刚刚创建的对数组对象的所有引用都会丢失而不会被释放。如果你做ARC,那么在这种情况下你不必担心。

答案 1 :(得分:0)

使用可变数组。

{

   NSMutableArray *item5 = [[NSMutableArray alloc]initWithArray:nil];
   for (int currentIndex=0; currentIndex<[tgpList1 count]; currentIndex++) {            

       tgpDAO *tgpTable = (tgpDAO *)[self.tgpList1 objectAtIndex:currentIndex];
       NSLog(@"The array values are %@",tgpList1);
       NSString *cityName1 = tgpTable.cityName;
       [item5 addObject:cityName1];

   }
}

答案 2 :(得分:0)

NSMutableArray *myCities = [NSMutableArray arrayWithCapacity:2]; // will grow if needed.

for( some loop conditions )
{
  NSString* someCity = getCity();
  [myCities addObject:someCity];
}

NSLog(@"number of cities in array: %@",[myCities count]);