2017-05-03 29 views
-4

我一直在尝试使用php登录一段时间,但我有一个最终的错误,阻止我完成。原来在NSJSONSerialization中给出了一个错误,其中错误告诉我:错误在调用中的额外参数。然后,我会提供一个截图,以便错误更加清晰,并且代码可以帮助我,因为我处于阻塞时刻,我不知道如何解决它。在此先感谢在调用中出现额外的参数错误

照片错误:[ 代码:

@IBAction func loginButtonTapped(sender: AnyObject) { 

    let userEmail = userEmailTextField.text; 
    let userPassword = userPasswordTextField.text; 



    if(userEmail!.isEmpty || userPassword!.isEmpty) { return; } 

    let myUrl = NSURL(string: "http://localhost/billapp/userSignIn.php"); 
    let request = NSMutableURLRequest(URL:myUrl!); 
    request.HTTPMethod = "POST"; 

    let postString = "userEmail=\(userEmail)&userPassword=\(userPassword)"; 

    request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding); 

    let task = NSURLSession.sharedSession().dataTaskWithRequest(request){ 
     data, response, error in 

     if error != nil{ 
      print("error=\(error)") 
      return 
     } 

     var err: NSError? 

     var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers, error:NSError) as? NSDictionary 

     if let parseJSON = json { 
      var resultValue:String = parseJSON["status"] as String!; 
      print("result: \(resultValue)") 

      if(resultValue=="Success") 
      { 
       NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn"); 
       NSUserDefaults.standardUserDefaults().synchronize(); 

       self.dismissViewControllerAnimated(true, completion: nil); 
      } 
     } 
    } 
    task.resume() 
} 

last error

+0

https://developer.apple.com/reference/foundation/jsonserialization/1415493-jsonobject关注 - 降'NS',改变方法名称,移除'error',将其封装在'try'中。 – luk2302

+0

你可以用我的代码来调整它吗? –

+0

如果它的工作,但在行如果让parseJSON = json我有一个错误,说:使用未解决的标识符'json' –

回答

0

您可以按照快速修复sugestions。这样做会让你最终是这样的:

do { 
    var json = try JSONSerialization.jsonObject(with: Data(), options: .mutableContainers) 
    if let parseJSON = json { 
      //your code 
    } 
} catch { 
    //handle error 
} 
+0

我不能使用这个,因为我在swift 2和你的代码是3 –

+0

那么为什么是问题标签Swift 3 @stackamr ??? – luk2302

+0

对不起,这是一个错误。但是你能帮我用swift 2做到吗? –

0

与Objective C中,按照在斯威夫特新methodolgy,错误使用的try/catch块管理,而不是传递错误对象的方法。

使用斯威夫特3.

do { 
     var json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) 
     if let parseJSON = json { 
     var resultValue:String = parseJSON["status"] as String!; 
     print("result: \(resultValue)") 

     if(resultValue=="Success") 
     { 
      NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn"); 
      NSUserDefaults.standardUserDefaults().synchronize(); 

      self.dismissViewControllerAnimated(true, completion: nil); 
     } 
    } 
} catch let error { 
     //Perform the error handling here 
} 

下面的代码斯威夫特2

do { 
     var json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) 
     if let parseJSON = json { 
     var resultValue:String = parseJSON["status"] as String!; 
     print("result: \(resultValue)") 

     if(resultValue=="Success") 
     { 
      NSUserDefaults.standardUserDefaults().setBool(true, forKey: "isUserLoggedIn"); 
      NSUserDefaults.standardUserDefaults().synchronize(); 

      self.dismissViewControllerAnimated(true, completion: nil); 
     } 
    } 
} catch let error { 
     //Perform the error handling here 
} 
+0

这是迅速2 –

+0

我已经编辑了为Swift 2合并的答案。 –

+0

如果它的工作,但在如果让parseJSON = JSON的行我有一个错误,说:使用未解决的标识符'json' –