0

行のすべてのエントリの値を持つUITableViewController配列を使用するがあります。JSON ファイルから読み取った値を反復処理して、その配列の値を設定したいと考えています。

これは、そのデータを配列に読み取り、View Controller に返すために作成した新しいメソッドです。配列をどこに返すか、または実際に設定する方法がわかりません。

+(NSArray *)setDataToJson{
NSDictionary *infomation = [NSDictionary dictionaryWithContentsOfJSONString:@"Test.json"];
NSArray *test = [infomation valueForKey:@"Animals"];
for (int i = 0; i < test.count; i++) {
    NSDictionary *info = [test objectAtIndex:i];
    NSArray *array = [[NSArray alloc]initWithObjects:[Animal animalObj:[info valueForKey:@"AnimalName"] 
location:[info valueForKey:@"ScientificName"] description:[info valueForKey:@"FirstDesc"] image:[UIImage imageNamed:@"cat.png"]], nil];
        return array;

データがローカル文字列(@"Cat")のときにanimalObj関数が機能したことはわかっていますが、dictionaryWithContentsOfJSONStringテストしたので機能しますが、この関数を使用してデータを配列に設定したことはなく、UILabelsにのみ設定したため、これが場所ですこのデータを配列に設定する方法について、私は混乱しています。それでも For ループを使用します。

4

1 に答える 1

1

のインスタンスを使用する NSMutableArrayと、forループを繰り返しながら、配列に要素を段階的に追加できます。

...
NSMutableArray *array = [NSMutableArray array];
for (int i = 0; i < test.count; i++) { 
    NSDictionary *info = [test objectAtIndex:i]; 
    Animal *animal = [Animal animalObj:[info valueForKey:@"AnimalName"]  
                              location:[info valueForKey:@"ScientificName"] 
                           description:[info valueForKey:@"FirstDesc"] 
                                 image:[UIImage imageNamed:@"cat.png"]];
    [array addObject:animal];
}
return array;

NSMutableArrayはのサブクラスであるためNSArray、メソッドの戻り値の型を変更する必要はありません。

于 2012-06-06T05:09:36.103 に答える