Swift 敏捷的为什么dataTaskWithRequest没有';你不调用闭包吗?
这是我的代码:Swift 敏捷的为什么dataTaskWithRequest没有';你不调用闭包吗?,swift,closures,nsurlsession,Swift,Closures,Nsurlsession,这是我的代码: let targetURL = NSURL(string: self.urlStringForRequestChannelDetails) let request = NSMutableURLRequest(URL: targetURL!) request.HTTPMethod = "GET" let defSession = NSURLSession.sharedSession() let task = defSe
let targetURL = NSURL(string: self.urlStringForRequestChannelDetails)
let request = NSMutableURLRequest(URL: targetURL!)
request.HTTPMethod = "GET"
let defSession = NSURLSession.sharedSession()
let task = defSession.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
let HTTPStatusCode = (response as! NSHTTPURLResponse).statusCode
if HTTPStatusCode == 200 && error == nil {
var resultsDict = [NSObject:AnyObject]()
do {
resultsDict = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.AllowFragments) as! [NSObject:AnyObject]
} catch let caught as NSError {
print(caught.description)
}
let items = resultsDict["items"] as! [AnyObject]
let firstItemDict = items[0] as! [NSObject:AnyObject]
let snippetDict = firstItemDict["snippet"] as! [NSObject:AnyObject]
self.channelData["title"] = snippetDict["title"]
self.channelData["description"] = snippetDict["description"]
self.channelData["thumbnail"] = ((snippetDict["thumbnails"] as! [NSObject:AnyObject])["default"] as! [NSObject:AnyObject])["url"]
self.channelData["playlistId"] = ((firstItemDict["contentDetails"] as! [NSObject:AnyObject])["relatedPlaylists"] as! [NSObject:AnyObject])["uploads"]
} else {
print("HTTP Status Code = \(HTTPStatusCode)")
print("Error while loading channel details: \(error)")
}
})
task.resume()
我无法通过brakepoint在处理程序中停止执行,因为未调用闭包。我做错了什么
upd#1:
}实际上是这样的。我只是复制并粘贴您的代码,删除自定义逻辑并运行它
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let targetURL = NSURL(string: "https://google.com")
let request = NSMutableURLRequest(URL: targetURL!)
request.HTTPMethod = "GET"
let defSession = NSURLSession.sharedSession()
let task = defSession.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
print(response)
})
task.resume()
}
}
你知道我只是复制粘贴了你的代码,然后又出现了这种行为。怎么了?@drewpts尝试创建一个新的单页应用程序并运行代码。我认为问题可能出在其他地方,在单独的单页应用程序代码中运行得非常完美。请查看upd#1@drewpts我懂了。这是什么
get 35;###ChannelDetails()
我想看看这个类的实际应用。显示你在哪里使用它
import UIKit
class YtFeedViewController: UIViewController {
@IBOutlet weak var menuButton:UIBarButtonItem!
override func viewDidLoad() {
super.viewDidLoad()
if self.revealViewController() != nil {
menuButton.target = self.revealViewController()
menuButton.action = "revealToggle:"
self.view.addGestureRecognizer(self.revealViewController().panGestureRecognizer())
YtDataManager.shared_instance.get###ChannelDetails()
print(YtDataManager.shared_instance.channelData.count) //0!
YtDataManager.shared_instance.getVideosFor###Channel()
}
self.navigationItem.title = "YouTube feed"
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let targetURL = NSURL(string: "https://google.com")
let request = NSMutableURLRequest(URL: targetURL!)
request.HTTPMethod = "GET"
let defSession = NSURLSession.sharedSession()
let task = defSession.dataTaskWithRequest(request, completionHandler: { (data: NSData?, response: NSURLResponse?, error: NSError?) -> Void in
print(response)
})
task.resume()
}
}