gpt4 book ai didi

swift - 当服务器上的数据发生更改时,cURL 获取数据不会更新

转载 作者:行者123 更新时间:2023-11-30 13:42:26 25 4
gpt4 key购买 nike

我有一个从网站 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 上的数据发生更改,我的数据也不会更新。我尝试关闭该应用程序并再次打开它,但它仍然没有更新数据。所以我想知道是否有人可以给我一些建议。任何帮助将不胜感激!

最佳答案

你需要一个来使它成为一个完成的闭包。这将使它能够发出请求,然后在您实际从请求中获取数据后调用重新加载“ TableView ”。这是您需要在 getData() 函数上更改的内容

func getData(completion: (json) -> Void)) {
print("getData is called")
//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!)
}
completion(json)
}

然后您将需要调整调用此函数的位置,因为您已经更改了参数,它应该看起来更像这样。

func willEnterForeground() {
print("will enter foreground")

getData(completion:{
self.data = json
self.tableView.reloadData()
})
}

它将等待数据返回,然后重新加载 View ,更新所有内容以反射(reflect)服务器上的内容。

如果您还有其他问题,请告诉我。

关于swift - 当服务器上的数据发生更改时,cURL 获取数据不会更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35399014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com