你好,我有下面的代码,除了一个异常(exception),它工作正常,在 Pull to Refresh 之后它返回 rss feed 的缓存版本。 例如,如果我使用不同的 URL 或为 LoadRSSRefresh 函数添加额外的查询参数,它会即时重新加载新的提要,但如果我想使用相同的 URL 执行下拉刷新,它会提供它的缓存版本。
谢谢
import UIKit
class eventsTableViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate, NSXMLParserDelegate {
var myFeed : NSArray = []
var url: NSURL = NSURL()
var urlRefresh: NSURL = NSURL()
var refresher: UIRefreshControl!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.rowHeight = 70
self.tableView.dataSource = self
self.tableView.delegate = self
url = NSURL(string: "http://example.com/?cat=6&feed=rss2")!
loadRss(url)
refresher = UIRefreshControl()
refresher.addTarget(self, action: "refresh", forControlEvents: UIControlEvents.ValueChanged)
self.tableView.addSubview(refresher)
urlRefresh = NSURL(string: "http://example.com/?cat=6&feed=rss2")!
loadRssRefresh(url)
}
func loadRss(data: NSURL) {
var myParser : XmlParserManager = XmlParserManager.alloc().initWithURL(data) as XmlParserManager
myFeed = myParser.feeds
tableView.reloadData()
println("load RSSURL01")
}
func loadRssRefresh(data: NSURL) {
var myParser : XmlParserManager = XmlParserManager.alloc().initWithURL(data) as XmlParserManager
myFeed = myParser.feeds
tableView.reloadData()
println("load RSSURL02")
self.refresher.endRefreshing()
}
func refresh(){
loadRssRefresh(urlRefresh)
println(urlRefresh)
}
最佳答案
在创建 NSURLRequest
时,将缓存策略设置为 ReloadIgnoringLocalAndRemoteCacheData
。
在 swift
let request = NSURLRequest(URL: url, cachePolicy:
NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData,
timeoutInterval: 10.0)
在 objective-c 中
NSURLRequest *request = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:60.0];
关于xcode - 如何在 UITableView 中刷新时清除 NSURL 的缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331766/