如何在 UITableView 中刷新时清除 NSURL 的缓存

How to clear cache for NSURL on refresh in UITableView

你好,我有下面的代码,除了一个例外,它工作正常,在拉动刷新后 returns 缓存版本的 rss 提要。 例如,如果我使用不同的 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];