我尝试向多个URL发出请求以下载HTML,然后将其转换为JSON格式。我遇到麻烦的地方是当我尝试向for循环中的多个URL发出请求时。我对异步请求没有掌握,所以,这对你们来说可能是一个明显的错误,但我无法找到问题的答案。
如果我尝试在没有循环的情况下运行它(仅引用TFHppleElement数组中的单个对象)它似乎有效,但是一旦我循环它,请求似乎不会做成。
不起作用:
func getData(data: [TFHppleElement]) {
for index in data{
let thisurl="https://theurl.org\(index.firstChild.objectForKey("href"))"
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: NSURL(string: thisurl)!)
request.HTTPMethod = "GET"
let task = session.dataTaskWithRequest(request){
(data : NSData?, response : NSURLResponse?, error : NSError?) -> Void in
if error == nil{
let parser = HTMLParser()
parser.parseNode(data!, xPathString: "//span[@class='odd']", callback: self.createJSON)
}else{
print("Request not working")
}
}
task.resume()
}
}
使用:
func getData(data: [TFHppleElement]) {
// for index in data{
let thisurl="https://theurl.org\(data[0].objectForKey("href"))"
let session = NSURLSession.sharedSession()
let request = NSMutableURLRequest(URL: NSURL(string: thisurl)!)
request.HTTPMethod = "GET"
let task = session.dataTaskWithRequest(request){
(data : NSData?, response : NSURLResponse?, error : NSError?) -> Void in
if error == nil{
let parser = HTMLParser()
parser.parseNode(data!, xPathString: "//span[@class='odd']", callback: self.createJSON)
}else{
print("Request not working")
}
}
task.resume()
//}
}
我还没有编程一段时间,所以如果这可能是一个明显的错误,我很抱歉。