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()
    }
}