如果TableView第一次启动,他应该通过JSON检索数据。不幸的是,这不起作用。只有当我使用刷新时,才会加载数据。有人可以帮我找到问题。谢谢你的帮助。
- (void)viewDidLoad
{
[super viewDidLoad];
UINib *nib = [UINib nibWithNibName:@"ErgebnissCell" bundle: nil];
[self.tableView registerNib:nib forCellReuseIdentifier:@"eCell"];
UIRefreshControl *theControl = self.refreshControl;
if([theControl actionsForTarget:self forControlEvent:UIControlEventValueChanged] == nil) {
[theControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
}
self.refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Aktuallisiere"];
switch ([self checkInternetConnection]) {
case NotReachable:
NSLog(@"Keine Internetverbindung Vorhanden");
break;
case ReachableViaWiFi:
NSLog(@"WI-FI Verbindung Vorhanden");
break;
case ReachableViaWWAN:
NSLog(@"WWAN Verbindung vorhanden");
break;
default:
break;
}
[self updateItems];
}
-(void)stopRefresh
{
[self.refreshControl endRefreshing];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
-(NetworkStatus)checkInternetConnection
{
self.reachability = [Reachability reachabilityForInternetConnection];
return [self.reachability currentReachabilityStatus];
}
-(NetworkStatus)checkInternetConnectionWithHostName:(NSString*)hostName
{
self.reachability = [Reachability reachabilityWithHostName:(NSString *)hostName];
return [self.reachability currentReachabilityStatus];
}
- (void)viewWillAppear:(BOOL)inAnimated {
[super viewWillAppear:inAnimated];
[self updateItems];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)inInterfaceOrientation {
return YES;
}
-(IBAction)refresh:(id)sender
{
[self updateItems];
}
- (void)updateItems {
NSString *ergbnisseURL = @"http://iosentwicklung.de/Ergebnisse_2014.json";
NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:ergbnisseURL]];
[NSURLConnection sendAsynchronousRequest: theRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *allCoursesData, NSError *error) {
if (allCoursesData == nil) {
NSLog(@"error = %@", error);
}
else {
NSError *error;
self.alleErgebnisse = [NSJSONSerialization
JSONObjectWithData:allCoursesData
options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves
error:&error];
self.heim1 = self.alleErgebnisse[@"Heim1"];
self.gast1 = self.alleErgebnisse[@"Gast1"];
self.ergebniss1 = self.alleErgebnisse[@"Ergebniss1"];
self.heim2 = self.alleErgebnisse[@"Heim2"];
self.gast2 = self.alleErgebnisse[@"Gast2"];
self.ergebniss2 = self.alleErgebnisse[@"Ergebniss2"];
self.heim3 = self.alleErgebnisse[@"Heim3"];
self.gast3 = self.alleErgebnisse[@"Gast3"];
self.ergebniss3 = self.alleErgebnisse[@"Ergebniss3"];
self.heim4 = self.alleErgebnisse[@"Heim4"];
self.gast4 = self.alleErgebnisse[@"Gast4"];
self.ergebniss4 = self.alleErgebnisse[@"Ergebniss4"];
self.heim5 = self.alleErgebnisse[@"Heim5"];
self.gast5 = self.alleErgebnisse[@"Gast5"];
self.ergebniss5 = self.alleErgebnisse[@"Ergebniss5"];
self.heim6 = self.alleErgebnisse[@"Heim6"];
self.gast6 = self.alleErgebnisse[@"Gast6"];
self.ergebniss6 = self.alleErgebnisse[@"Ergebniss6"];
self.heim7 = self.alleErgebnisse[@"Heim7"];
self.gast7 = self.alleErgebnisse[@"Gast7"];
self.ergebniss7 = self.alleErgebnisse[@"Ergebniss7"];
self.heim8 = self.alleErgebnisse[@"Heim8"];
self.gast8 = self.alleErgebnisse[@"Gast8"];
self.ergebniss8 = self.alleErgebnisse[@"Ergebniss8"];
self.heim9 = self.alleErgebnisse[@"Heim9"];
self.gast9 = self.alleErgebnisse[@"Gast9"];
self.ergebniss9 = self.alleErgebnisse[@"Ergebniss9"];
self.heim10 = self.alleErgebnisse[@"Heim10"];
self.gast10 = self.alleErgebnisse[@"Gast10"];
self.ergebniss10 = self.alleErgebnisse[@"Ergebniss10"];
self.heim11 = self.alleErgebnisse[@"Heim11"];
self.gast11 = self.alleErgebnisse[@"Gast11"];
self.ergebniss11 = self.alleErgebnisse[@"Ergebniss11"];
self.heim12 = self.alleErgebnisse[@"Heim12"];
self.gast12 = self.alleErgebnisse[@"Gast12"];
self.ergebniss12 = self.alleErgebnisse[@"Ergebniss12"];
self.heim13 = self.alleErgebnisse[@"Heim13"];
self.gast13 = self.alleErgebnisse[@"Gast13"];
self.ergebniss13 = self.alleErgebnisse[@"Ergebniss13"];
self.heim14 = self.alleErgebnisse[@"Heim14"];
self.gast14 = self.alleErgebnisse[@"Gast14"];
self.ergebniss14 = self.alleErgebnisse[@"Ergebniss14"];
self.heim15 = self.alleErgebnisse[@"Heim15"];
self.gast15 = self.alleErgebnisse[@"Gast15"];
self.ergebniss15 = self.alleErgebnisse[@"Ergebniss15"];
self.heim16 = self.alleErgebnisse[@"Heim16"];
self.gast16 = self.alleErgebnisse[@"Gast16"];
self.ergebniss16 = self.alleErgebnisse[@"Ergebniss16"];
self.heim17 = self.alleErgebnisse[@"Heim17"];
self.gast17 = self.alleErgebnisse[@"Gast17"];
self.ergebniss17 = self.alleErgebnisse[@"Ergebniss17"];
self.heim18 = self.alleErgebnisse[@"Heim18"];
self.gast18 = self.alleErgebnisse[@"Gast18"];
self.ergebniss18 = self.alleErgebnisse[@"Ergebniss18"];
self.heim19 = self.alleErgebnisse[@"Heim19"];
self.gast19 = self.alleErgebnisse[@"Gast19"];
self.ergebniss19 = self.alleErgebnisse[@"Ergebniss19"];
self.heim20 = self.alleErgebnisse[@"Heim20"];
self.gast20 = self.alleErgebnisse[@"Gast20"];
self.ergebniss20 = self.alleErgebnisse[@"Ergebniss20"];
self.heim21 = self.alleErgebnisse[@"Heim21"];
self.gast21 = self.alleErgebnisse[@"Gast21"];
self.ergebniss21 = self.alleErgebnisse[@"Ergebniss21"];
self.heim22 = self.alleErgebnisse[@"Heim22"];
self.gast22 = self.alleErgebnisse[@"Gast22"];
self.ergebniss22 = self.alleErgebnisse[@"Ergebniss22"];
self.heim23 = self.alleErgebnisse[@"Heim23"];
self.gast23 = self.alleErgebnisse[@"Gast23"];
self.ergebniss23 = self.alleErgebnisse[@"Ergebniss23"];
self.heim24 = self.alleErgebnisse[@"Heim24"];
self.gast24 = self.alleErgebnisse[@"Gast24"];
self.ergebniss24 = self.alleErgebnisse[@"Ergebniss24"];
self.heim25 = self.alleErgebnisse[@"Heim25"];
self.gast25 = self.alleErgebnisse[@"Gast25"];
self.ergebniss25 = self.alleErgebnisse[@"Ergebniss25"];
}
}];
[self.tableView reloadData];
[self.refreshControl setTintColor:[UIColor colorWithRed:0.000 green:0.000 blue:0.630 alpha:1.000]];
//[self setRefreshControl: self.refreshControl];
[self performSelector:@selector(stopRefresh) withObject:nil afterDelay:3];
//[self.refreshControl endRefreshing];
}
答案 0 :(得分:0)
您不是从异步完成块调用表上的reloadData
。您在进行异步调用后立即调用它。试试这个:
// weak reference self:
__weak typeof(self)weakSelf = self;
[NSURLConnection sendAsynchronousRequest: theRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *allCoursesData, NSError *error) {
__strong typeof(weakSelf)strongSelf = weakSelf;
if (allCoursesData == nil) {
NSLog(@"error = %@", error);
}
else {
NSError *error;
self.alleErgebnisse = [NSJSONSerialization
JSONObjectWithData:allCoursesData
options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves
error:&error];
// do stuff
// RELOAD TABLE HERE:
[self.tableView reloadData];
}
}];
答案 1 :(得分:0)
顾名思义sendAsynchronousRequest
是异步的。这意味着函数返回并继续执行下一行代码,即使函数本身尚未完成其工作。这也意味着这一行
[self.tableView reloadData];
没有任何效果,因为当您已经执行了reloadData
方法时,请求仍然有效,因此没有任何数据需要重新加载,因为请求仍在获取信息。
此外,它第二次工作,但事实上它不起作用。您第二次看到的是上一个请求中的数据。
一种可能的解决方案是将reloadData
行放在completionHandler
块内,正上方。