0

我有一个UITableViewController使用数组,其中包含行中每个条目的值。我想通过迭代从 JSON 文件中读取的值来设置该数组的值。

这是我创建的用于将该数据读入数组并将其返回到我的视图控制器的新方法。我不知道在哪里返回数组,或者如何真正设置它。

+(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”)和我的dictionaryWithContentsOfJSONString作品时我的 animalObj 函数起作用,因为我已经测试过,但我没有使用这个函数将数据设置为数组,只设置为 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 回答