【发布时间】:2016-10-02 04:05:09
【问题描述】:
我收到标题中描述的错误。
从 '(_, _, _) throws -> ()' 类型的抛出函数到非抛出函数类型 '(NSData?, NSURLResponse?, NSError?) -> Void' 的无效转换
在会话 dataTaskWithRequest 之后。这是一个简单的用户注册到 PHP 和 mysql。在 Swift xcode 7.3 中。
func displaymyalertmessage(userMessage:String)
{
var myAlert = UIAlertController(title: "Alert" , message:userMessage, preferredStyle: UIAlertControllerStyle.Alert);
let OkAction = UIAlertAction (title: "Ok", style: UIAlertActionStyle.Default, handler:nil);
myAlert.addAction(OkAction);
self.presentViewController(myAlert, animated:true, completion:nil);
}
// check for empty fields
if(useremail!.isEmpty || username!.isEmpty ||
userpassword!.isEmpty ||
userrepeatpassword!.isEmpty){
// Display alert message
displaymyalertmessage("All fields are required");
return;
}
//Check if passwords match
if(userpassword != userrepeatpassword)
{
// display an alert message
displaymyalertmessage("Passwords do not match");
return;
}
// send data to server
let myUrl = NSURL(string: "http://example/xxx.php")
let request = NSMutableURLRequest(URL:myUrl!);
var session = NSURLSession.sharedSession()
request.HTTPMethod = "POST";
let postString = "email=\(useremail)&password=\(userpassword)&username=\(username)"
request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding);
这是我收到错误的下一个任务(_,_,_)
do {
let task = session.dataTaskWithRequest(request)
{ (data, response, error) in
// if error
if error != nil {
print("error=\(error)")
return
}
var err: NSError?
var json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers, error: &err) as? NSDictionary
if let parseJSON = json {
var resultvalue = parseJSON["status"] as? String
printld("result: \(resultvalue)")
var isuserregistered:Bool = false;
if(resultvalue=="Success") { isuserregistered = true; }
var messagetodisplay:String = parseJSON["message"] as String!;
if(!isuserregistered)
{
messagetodisplay = parseJSON["message"] as String!;
}
dispatch_async(dispatch_get_main_queue(), {
// Display alert message with confirmation
var myAlert = UIAlertController(title: "Alert" , message: "Registration is successful. Thank You", preferredStyle: UIAlertControllerStyle.Alert);
let OkAction = UIAlertAction (title: "Ok", style: UIAlertActionStyle.Default){ ACTION in
self.dismissViewControllerAnimated(true, completion: nil);
}
myAlert.addAction(OkAction);
self.presentViewController(myAlert, animated:true, completion:nil)
});
} }
task.resume()
}
我尝试了很多方法,但我无法清除此错误。
【问题讨论】:
-
您应该使用
try?或try!而不仅仅是try。try传播错误,使整个闭包成为抛出闭包,在这种情况下是不允许的。
标签: php mysql xcode swift error-handling