Невозможно вызвать '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()