在Xcode 7 Beta中开始使用Swift 2后,出现错误cannot invoke
。导致这个问题的原因是什么?
我尝试通过以下两个问题来解决我的问题,但我仍然收到错误:Question 1,Question 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)
}
}
}
答案 0 :(得分:5)
感谢Leo Dabus,在他的帮助下,我发现这是Swift 2中的新功能。您输入代码的方式应该是try
或try!
处理
应该运行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()