我遇到了问题而且不确定如何解决这个问题,我从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类也是正确的。
答案 0 :(得分:1)
对[results objectForKey:@"DATA"]
的调用不会为您提供数组。它为您提供了另一个字典,其中包含一个键(" LOCATION")到您想要的数组。
所以在fetchSites
做:
NSArray *sites = results[@"DATA"][@"LOCATION"];
然后在cellForRowAtIndexPath
做:
cell.textLabel.text = self.sites[indexPath.row];