【问题标题】:Internet data doesn't update correctly互联网数据未正确更新
【发布时间】:2014-09-29 20:23:02
【问题描述】:

我的应用程序使用互联网连接时遇到了这个奇怪的问题。该应用程序似乎没有以正确的方式更新来自互联网的数据。我有一个带有简单聊天的 UIWebView。当我在与 safari 的聊天中或在我的网络浏览器中写一条消息时,一切正常。在应用程序的聊天中写入内容时,即使重新加载页面,数据也不会更新。

它也完全不合逻辑地更新。即使重新启动应用程序也不会显示新数据,然后突然显示。

另一个应用也有同样的问题,UIWebView 没有处理。知道它可能是什么吗?

示例代码:

- (void) viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];

NSString *username = [[Database singletonDataBase] currentUserName];
NSString *urlAddress = [NSString stringWithFormat:@"%@?name=%@", @"http://webapi.com/index.php", username];
NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

[self.webView loadRequest:requestObj];

}

【问题讨论】:

  • 你能展示一些相关的代码吗?
  • 我真的不认为代码有问题,它与其他问题有关......但我不知道是什么。
  • 尝试使用所需的缓存策略创建您的 url 请求。

标签: ios objective-c cocoa-touch uiwebview


【解决方案1】:

在您的应用委托中,didFinishLoading 方法中,将 NSURLCache 设置为不缓存数据:

// Remove and disable all URL Cache, but doesn't seem to affect the memory
[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];

如果这不起作用,您还可以尝试在 NSURLRequest 上设置缓存策略:

NSURL *url = [NSURL URLWithString:urlAddress];
NSURLRequest *requestObj = [NSURLRequest requestWithURL:url 
                                        cachePolicy:NSURLRequestReloadIgnoringCacheData
                                    timeoutInterval: 10.0]; 

【讨论】:

  • 感谢您的回答。我尝试了您的两个建议以及所有类型的缓存策略,但它们似乎都不起作用。它不可能是 Xcode 中的一些设置或什么? ://
【解决方案2】:

我终于找到了答案。正如我所想,我的代码没有问题。问题出在服务器端。而且,正如他们在这个帖子中所说:

NSURLConnection is returning old data

似乎是服务器端或代理配置错误。这使得缓存的行为变得很奇怪。我尝试了另一台服务器,一切正常!

希望这可以帮助遇到同样问题的人,因为这确实浪费了我很多时间。

【讨论】:

    猜你喜欢
    • 2011-10-08
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多