如何使用目标C将JSON值加载到tableview数组中

时间:2015-07-24 04:32:32

标签: ios objective-c json uitableview

如何将jsonDictionary[@"response"][obj][@"color"]加载到表视图数组中。下面是我正在使用的示例代码,但每次我在return [tableviewArray count];收到错误的异常。请为我的问题提供一些解决方案。

NSError *error;
NSDictionary *jsonDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

// get keys from response dictionary
NSMutableArray * key = [[NSMutableArray alloc] initWithArray:[jsonDictionary[@"response"] allKeys]];

// sort as asending order
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self" ascending: YES];
key =  (NSMutableArray *)[key sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];

// access inner data from dictonary
for (NSString * obj in key) {

    // Here below values I want to apply for tableview array
    NSLog(@"%@",jsonDictionary[@"response"][obj][@"color"]);
    NSArray *tableviewArray = [jsonDictionary[@"response"][obj][@"color"]]; 
}

我在下面的tableview方法

上遇到了异常
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [tableviewArray count]; // Here am getting bad exception
}

我的JSON:

{
    response: {
        RED: {
            Color: "red",
            color_id: "01"},
        GREEN: {
            Color: "green",
            color_id: "02"}
    },
    Colorcode: {},
    totalcolor: "122"
}

2 个答案:

答案 0 :(得分:0)

在.h文件中声明colorArray&在viewDidLoad方法中使用alloc init。 如

- (void)viewDidLoad {
[super viewDidLoad];
colorArray = [[NSMutableArray alloc]init];
}

添加颜色数组如下: -

  NSMutableArray 
 for (NSString * obj in key) {

 // Here below values I want to apply for tableview array
 NSLog(@"%@",jsonDictionary[@"response"][obj][@"color"]);

[colorArray addObject:dict[@"response"][obj][@"Color"]]; // here I am applying array
}

然后你可以在tableview委托方法中访问colorArray。

答案 1 :(得分:0)

我认为你得到了异常,因为你在加载这个视图控制器时没有初始化它。因为,它也将加载UITableView并且你应该至少返回0,以便在完成加载后让它显示一个空表视图。对于你的情况,它甚至不返回0,因为你的tableviewArray是零。因此,您应该在完成加载后调用reload。