-1

ここでは、cityName1Piscataway、Iselin、Broklynなどの都市名を配列から取得しているtgpList1ので、値を。という配列に入れる必要がありますitem5

上記の反復によってフェッチされた133のレコードがあります。cityName1次のコードは、ループ内ではありますが、都市名のリスト全体ではなく 、最後のレコードのみを格納します。

私は多くの方法を試しましたが、何かが足りません。

tgpList1は配列です。 tgpDAO2つのオブジェクトを持つNSObjectでNSString *airportCodeあり、NSString *cityName

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];
}
4

3 に答える 3

0

それ以外の

item5 =[NSArray arrayWithObjects:cityName1, nil];

使用する

[item5 addObject:cityName1];

それを達成する方法は他にもあります。ただし、これはその目的のために設計されたものであり、私の観点からは最も「読みやすい」ものです。

前にitem5の内容をクリアする必要がある場合は、

[item5 removeAllObjects]; 

forループの直前。

何をしていたか:arrayWithObjectsは常に、引数として渡されるオブジェクトで構成されていない新しい配列を作成します。ARCを使用しない場合、arrayWithObjectsはすべてのループでオブジェクトを作成して保持し、次のループでは作成されたばかりの配列オブジェクトへのすべての参照が解放されずに失われるため、コードで深刻なメモリリークが発生します。 。ARCを実行する場合、この場合は心配する必要はありません。

于 2012-09-11T07:53:56.753 に答える
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];

   }
}
于 2012-09-11T07:55:09.150 に答える
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]);
于 2012-09-11T07:55:43.643 に答える