如何在UITableView中刷新NSURL的缓存

时间:2015-02-04 21:25:56

标签: xcode uitableview swift caching

你好我有一个下面的代码可以正常工作,有一个例外,在Pull to Refresh之后它会返回rss feed的缓存版本。 例如,如果我使用不同的URL或为LoadRSSRefresh函数添加其他查询参数,它会动态重新加载新的Feed,但是如果我想使用相同的URL执行pull to refresh,则会为其提供缓存版本。

谢谢

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)
}

1 个答案:

答案 0 :(得分:1)

创建NSURLRequest时,请将缓存策略设置为ReloadIgnoringLocalAndRemoteCacheData

在Swift中

let request = NSURLRequest(URL: url, cachePolicy:
    NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData,
    timeoutInterval: 10.0)

目标C

NSURLRequest *request = [NSURLRequest requestWithURL:url
      cachePolicy:NSURLRequestReloadIgnoringCacheData
      timeoutInterval:60.0];