我使用以下代码通过php-API从数据库中获取数据:
- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self loadDataWithSpinner];
[self reloadAllData];
}
- (void) loadDataWithSpinner {
if (!self.spinner) [self setupSpinnerView];
self.sessions = nil;
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){
self.userId = [[NSUserDefaults standardUserDefaults] integerForKey:@"CurrentUserId"] ;
self.sessions = [self getAllSessionsForUserId:self.userId];
dispatch_async(dispatch_get_main_queue(), ^(void){
if (self.sessions) {
self.spinnerBgView.hidden = YES;
[self setupChartsAndCountingLabelsWithData];
}
});
});
}
- (NSArray *) getAllSessionsForUserId: (int) userId {
NSData *dataURL = nil;
NSString *strURL = [NSString stringWithFormat:@"http://webapiurl.com/be.php?queryType=fetchAllBasicSessions&user_id=%i", userId];
dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
NSError *error = nil;
if (dataURL) {
NSArray *sessions = [NSJSONSerialization JSONObjectWithData:dataURL options:kNilOptions error:&error];
return sessions;
} else {
return Nil;
}
}
代码有问题吗?在使用相同数据库调用的Web浏览器中进行测试时,我获得了正确的数据。但是在应用程序中它有时会立即更新,有时需要花费五分钟才能更新数据。即使我从手机/模拟器中删除了应用程序,但在再次打开应用程序时,数据有时无法更新。
我真的很感激一些帮助。
答案 0 :(得分:0)
我终于找到了答案。正如我所想,我的代码没有错。问题出在服务器端。而且,正如他们在这篇帖子中所说:
NSURLConnection is returning old data
似乎配置错误的服务器端或代理。这使得缓存行为一切都很奇怪。我尝试了另一台服务器,一切正常!
希望这可以帮助有同样问题的人,因为它确实浪费了我很多时间。