Php 无法从类型为';的抛出函数清除无效转换错误;(u,u,u)抛出->;()';到非抛出函数类型
我收到一个错误,因为标题中有贬义 从类型为“(,,)的抛出函数抛出->()”到非抛出函数类型“(NSData?,NSURLResponse?,NSError?)的转换无效->无效” 会话结束后,dataTaskWithRequest。这是一个简单的PHP和mysql用户注册。在Swift xcode 7.3中Php 无法从类型为';的抛出函数清除无效转换错误;(u,u,u)抛出->;()';到非抛出函数类型,php,mysql,xcode,swift,error-handling,Php,Mysql,Xcode,Swift,Error Handling,我收到一个错误,因为标题中有贬义 从类型为“(,,)的抛出函数抛出->()”到非抛出函数类型“(NSData?,NSURLResponse?,NSError?)的转换无效->无效” 会话结束后,dataTaskWithRequest。这是一个简单的PHP和mysql用户注册。在Swift xcode 7.3中 func displaymyalertmessage(userMessage:String) { var myAlert = UIAlertController(
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);
在下一个任务中,我收到错误(,,,)
我尝试了很多方法,但无法清除此错误。您需要将
try catch
移到回调块范围中。此外,您不应通过引用将err
传递到JSONObjectWithData
,因为它会引发错误。这应该起作用:
let task = session.dataTaskWithRequest(request) { (data, response, error) in
// if error
if error != nil {
print("error=\(error)")
return
}
var json: NSDictionary? = nil
do {
json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
} catch {
print("error=\(error)")
}
//...
您需要将
try catch
移动到回调块范围中。此外,您不应通过引用将err
传递到JSONObjectWithData
,因为它会引发错误。这应该起作用:
let task = session.dataTaskWithRequest(request) { (data, response, error) in
// if error
if error != nil {
print("error=\(error)")
return
}
var json: NSDictionary? = nil
do {
json = try NSJSONSerialization.JSONObjectWithData(data!, options: .MutableContainers) as? NSDictionary
} catch {
print("error=\(error)")
}
//...
您应该使用
try?
或try
而不仅仅是尝试try
传播使整个闭包成为抛出闭包的错误,这在本例中是不允许的。您应该使用try?
或try
而不仅仅是尝试try
传播使整个闭包成为抛出闭包的错误,这在本例中是不允许的。我尝试了此操作,现在得到了一个无效的标识符json@Mro我已经更新了答案。希望它能解决你的问题我试过了,现在我得到了一个无效的标识符json@Mro我已经更新了答案。希望它能解决你的问题