无法调用" dataTaskWithRequest'使用类型'的参数列表(NSMutableURLRequest,(_,_,_)throws - > _)'

时间:2015-06-09 16:59:46

标签: ios xcode swift

在Xcode 7 Beta中开始使用Swift 2后,出现错误cannot invoke。导致这个问题的原因是什么?

我尝试通过以下两个问题来解决我的问题,但我仍然收到错误:Question 1Question 2

错误:

  

无法调用" dataTaskWithRequest'使用类型的参数列表   '(NSMutableURLRequest,(_,_,_)抛出 - > _)'

完整代码

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)

                }
            }

        }

3 个答案:

答案 0 :(得分:5)

感谢Leo Dabus,在他的帮助下,我发现这是Swift 2中的新功能。您输入代码的方式应该是trytry!处理

应该运行NSJSONSerialization :(如果抛出输入你删除!

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

答案 1 :(得分:2)

try更改为try!然后它将开始编译为常态。

答案 2 :(得分:1)

尝试这样:

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