【发布时间】:2016-01-17 12:40:25
【问题描述】:
我有一个 http 请求,如果我正确接收到响应,那么我想启动一个每秒触发一个函数的计时器。该函数也是一个http请求。
这是我触发计时器的代码
if let data = data {
do{
let resultJSON = try NSJSONSerialization.JSONObjectWithData(data, options: [])
requestClient.id = resultJSON["id"] as! Double
self.timerResponse = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "checkIfThereAreResponeses", userInfo: nil, repeats: true)
self.timerResponse!.fire()
}catch{
}
}
如你所见,我正在调用一个名为checkIfThereAreResponses的函数
在该函数中,我有一个打印语句,并且该打印语句只打印一次,虽然我的计时器应该每 1 秒工作一次
我缺少什么?
这就是函数
func checkIfThereAreResponeses(){
if (requestClient!.id != nil) {
let url = NSURL(string: "http://localhost:blablabla")
let request = NSMutableURLRequest(URL: url)
request.HTTPMethod = "POST"
let session = NSURLSession.sharedSession()
task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) in
if let error = error {
print("error = \(error)")
}
if let data = data {
do {
let resultJSONArray = try NSJSONSerialization.JSONObjectWithData(data, options: []) as! NSArray
bla bla bla
}catch {
print("no responses yet = \(error)")
}
}
})
task!.resume()
}else {
print("not yet ")
}
}
我收到的 JUST ONCE 是no response yet
【问题讨论】:
-
我无法重现该问题,
print是checkIfThereAreResponeses中的第一条语句吗? -
@luk2302 但它在里面。
-
但它是第一个吗?查看实际的
checkIfThereAreResponeses可能会有所帮助! -
@luk2302 好的,我给了你代码
-
@luk2302 我现在在函数的开头打印了一个,它仍然只工作一次,但是当我将计时器放在主线程中时它可以工作