Невозможно вызвать 'dataTaskWithRequest' с помощью списка аргументов типа '(NSMutableURLRequest, (_, _, _) throws → _)'

После запуска Swift 2 в бета-версии Xcode 7 я получаю сообщение об ошибке cannot invoke. В чем причина этой проблемы?

Я пытаюсь выяснить свою проблему, следуя этим двум вопросам, но я все еще получаю ошибку: Вопрос 1, Вопрос 2

Ошибка:

Невозможно вызвать 'dataTaskWithRequest' с помощью списка аргументов типа '(NSMutableURLRequest, (_, _, _) throws → _)'

Полный код

let task = NSURLSession.sharedSession().dataTaskWithRequest(request) {data, response, error in
            let json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as? NSDictionary

            if let parseJSON = json {
                let resultValue:String = parseJSON["status"] as! String

                if(resultValue=="Success"){

                    //Store Confimed Account Detail Inside Core Data
                    try self.saveAccountDetail(userloginTextField!, confirmDataRetrieve: 0)

                    //Login is Successful
                    NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn")
                    NSUserDefaults.standardUserDefaults().synchronize()

                    self.dismissViewControllerAnimated(true, completion: nil)

                }
            }

        }

Ответ 1

Благодаря Лео Дабусу, с его помощью я выясняю, что это новая функция в Swift 2. то, как вы вводите код, должно быть try или try! Обработка

NSJSONSerialization должен быть запущен: (если вы выбрали ввод, удалите !)

let json = try!NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary

Ответ 2

Изменить с try на try! Затем он начнет компилировать как норму.

Ответ 3

попробуйте вот так:

let task =  NSURLSession.sharedSession().dataTaskWithRequest(request,
    completionHandler: {
        (data, response, error) -> Void in
        if let data = data {
            println(data.length)
            // you can use data here
        } else if let error = error {
            println(error.description)
        }
})
task!.resume()

вы можете протестировать с помощью этого

let task =  NSURLSession.sharedSession().dataTaskWithRequest(
    NSURLRequest(URL: NSURL(string: "https://cdn.photographylife.com/wp-content/uploads/2014/06/Nikon-D810-Image-Sample-6.jpg")!),
    completionHandler: {
        (data, response, error) -> Void in
        if let data = data {
            println(data.length)
            if let image = UIImage(data: data) {
                println(image.description)
            }

        } else if let error = error {
            println(error.description)
        }

})
task!.resume()