我正在尝试使用NSURLSession
从espn中提取一些数据,但我似乎无法让它工作。它仅打印nil
。
我已经在他们的网站上用另一个页面测试了这个方法并且它有效,但我不能让它与代码中的那个一起工作。以下是有问题的代码:
var url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
print(data)
if error == nil {
var urlContent = NSString(data: data, encoding: NSUTF8StringEncoding) as NSString!
print(urlContent)
我也尝试过更改无法正常工作的编码类型。它打印的数据看起来像是UTF 8格式,所以我认为这不会起作用,但觉得我应该尝试。
我觉得我的想法已经用完了。
修改:应该指定更多内容,print(data)
打印出我预期的编码数据,但print(urlContent)
打印nil
。
答案 0 :(得分:7)
这是一个有效的完整示例
var url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
print(data)
if error == nil {
var urlContent = NSString(data: data, encoding: NSASCIIStringEncoding) as NSString!
print(urlContent)
}
})
task.resume()
}
此处的正确编码似乎是NSASCIIStringEncoding
而不是NSUTF8StringEncoding
。
答案 1 :(得分:2)
这不是解决此问题的最佳方法,但上述答案在swift 3中不起作用,所以我使用了它。
let url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = URLSession.shared.dataTask(with: url! as URL, completionHandler: { (data, response, error) -> Void in
print(data as Any)
if error == nil {
let urlContent = NSString(data: data!, encoding: String.Encoding.ascii.rawValue) as NSString!
print(urlContent as Any)
}
})
task.resume()
}
答案 2 :(得分:0)
应该是这样的:
var url = NSURL(string: "http://espn.go.com/golf/leaderboard?tournamentId=2271")
if url != nil {
let task = NSURLSession.sharedSession().dataTaskWithURL(url!, completionHandler: { (data, response, error) -> Void in
print(data)
if error == nil {
var urlContent = NSString(data: NSData!, encoding: Uint)
print(urlContent)
}
})
task.resume()
}