TableViewController上未显示数据

时间:2014-04-30 22:45:31

标签: ios objective-c json ios7

我遇到了问题而且不确定如何解决这个问题,我从JSON数据中获取我的网站数据,我可以获取数据并在我做NSLog时查看iT。数据显示与我以前做过的有点不同。这就是它的样子

{
  COLUMNS =     (
    OCCUPIED,
    STATIONS,
    SITEID,
    NAME,
    LOCATION,
    ABBREVNAME,
    LATITUDE,
    LONGITUDE
    );

   DATA =     {
    LOCATION =         (
        "MH 111",
        Roy,
        Morgan,
        "SU 323",
        "SC 262",
        "D3 230",
        "SS 38 Basement",
        "SL 228"
    );
}

如何在TableViewController上显示MH 111。我一直在做的方式似乎不起作用,并且最终每次都抛出一个线程1:信号SIGBRT错误,我可以找出原因。这是我在下面的代码改变了一些东西,因为它发布在这里。

有一个类来执行url并获取JSON数据

- (void)viewDidLoad {
    [super viewDidLoad];
    [self fetchSites];
}

- (void)fetchSites {
    NSURL *url = [NSURL URLWithString:@"myurlhere"];
    NSData *jsonData = [NSData dataWithContentsOfURL:url];
    NSDictionary *results = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil];
    NSArray *sites = [results objectForKey:@"DATA"];
    self.sites = sites;
}

同样对于tableviewcontroller类我有这个

- (void)setSites:(NSArray *)sites {
    _sites = sites;
    [self.tableView reloadData];
}

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
   return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  return [self.sites count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Site Cell" forIndexPath:indexPath];

NSDictionary *site = self.sites[indexPath.section];
cell.textLabel.text =[site objectForKey:@"LOCATION"];
return cell;
}

此外,我在表视图控制器的.h中有一个NSArray属性,称为网站,这往往会给我线程1:信号错误,我似乎无法弄清楚,有人可以帮忙吗?我还确保标识符是正确的,并且tableViewController类也是正确的。

1 个答案:

答案 0 :(得分:1)

[results objectForKey:@"DATA"]的调用不会为您提供数组。它为您提供了另一个字典,其中包含一个键(" LOCATION")到您想要的数组。

所以在fetchSites做:

NSArray *sites = results[@"DATA"][@"LOCATION"];

然后在cellForRowAtIndexPath做:

cell.textLabel.text = self.sites[indexPath.row];