【发布时间】:2016-02-14 22:54:07
【问题描述】:
我有一个从网站 api 获取数据的函数。
func getData() {
print("getData is called")
//create authentication ... omitted
//create authentication url and request
let urlPath = "https://...";
let url = NSURL(string: urlPath)!
let request: NSMutableURLRequest = NSMutableURLRequest(URL: url)
request.setValue("Basic \(base64EncodedCredential)", forHTTPHeaderField: "Authorization")
request.HTTPMethod = "GET"
//some configuration here...
let task = session.dataTaskWithURL(url) { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
let json = JSON(data: data!)
}
task.resume()
}
我能够从 API 获取数据,并且我有一个观察者,因此每次当应用程序进入前台时,都可以再次调用 getData() 函数来更新数据。
override func viewDidLoad() {
NSNotificationCenter.defaultCenter().addObserver(self, selector: "willEnterForeground", name: UIApplicationWillEnterForegroundNotification, object: nil)
}
func willEnterForeground() {
print("will enter foreground")
getData()
}
我很确定当我的应用程序进入前台时,会再次调用 getData(),但是,即使服务器 API 上的数据发生更改,我的数据也不会更新。我试图关闭应用程序并再次打开它,但它仍然没有更新数据。所以我想知道是否有人可以给我一些建议。任何帮助将不胜感激!
【问题讨论】:
-
我在
let task = session.dataTaskWithURL(url) { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in let json = JSON(data: data!) }中添加了一些断点,似乎我的代码试图获取数据(api 每分钟更改一次数据),但是即使我观察到数据,它也会得到旧数据服务器 api 已更改。如果我将应用程序长时间发送到后台(大约 15 分钟),当它被带到前台时,数据会更新。
标签: swift api curl background-foreground