Ios 数据未显示在TableViewController上
我遇到了一个问题,不知道如何解决它,我从我的站点从JSON数据中获取数据,我能够获取数据并在执行NSLog时看到它。数据显示出与我以前所做的略有不同。这就是它看起来的样子Ios 数据未显示在TableViewController上,ios,objective-c,json,ios7,Ios,Objective C,Json,Ios7,我遇到了一个问题,不知道如何解决它,我从我的站点从JSON数据中获取数据,我能够获取数据并在执行NSLog时看到它。数据显示出与我以前所做的略有不同。这就是它看起来的样子 { COLUMNS = ( OCCUPIED, STATIONS, SITEID, NAME, LOCATION, ABBREVNAME, LATITUDE, LONGITUDE ); DATA = { LOCATION
{
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中有一个名为sites的NSArray属性,这会给我线程1:signal error,我似乎无法找到它,有人能帮忙吗?我还确保标识符正确,tableViewController类正确。调用
[results objectForKey:@“DATA”]
不会给您提供数组。它为您提供了另一个字典,其中有一个指向所需数组的键(“位置”)
因此,在fetchSites
do中:
NSArray *sites = results[@"DATA"][@"LOCATION"];
cell.textLabel.text = self.sites[indexPath.row];
然后在cellforrowatinexpath
do中:
NSArray *sites = results[@"DATA"][@"LOCATION"];
cell.textLabel.text = self.sites[indexPath.row];
顺便说一句-当发布关于崩溃的问题时,始终指出哪一行正在崩溃,并发布完整的错误消息。你可能会很高兴我能帮上忙。不要忘记接受答案来结束你的问题。