2017-05-03 22 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에 대해 다음 스위프트 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 } 

다음 코드 - 드롭 'NS', 메서드 이름을 변경하고,'error'를 제거하고,'try'로 감싼다. – luk2302

+0

제 코드로 적응시켜 주시겠습니까? –

+0

만약 작동한다면, parseJSON = json이라면 다음과 같은 오류가 있습니다 : 해결되지 않은 식별자 'json'을 사용합니다 –

답변

0

당신은 빠른 수정 sugestions을 따를 수 있습니다. 이렇게하면 이렇게 끝낼 수있게된다 : 목적 C는 달리

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

스위프트 2이고 코드가 3이기 때문에 이것을 사용할 수 없습니다 –

+0

왜 그렇습니까? 질문 태그 스위프트 3 @ stackamr ??? – luk2302

+0

죄송합니다. 실수였습니다. 하지만 신속한 2 단계로 도와 줄 수 있습니까? –

0

를, 스위프트의 새로운 methodolgy에 따라, 오류가 try/catch 블록을 사용하여 처리하는 대신 방법에서 오류 객체를 전달합니다.

사용 스위프트 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

이것은 swift입니다. 2 –

+0

스위프트 2에 대한 답변을 편집했습니다. –

+0

작동하지만, parseJSON = json이라면 다음과 같은 오류가 있습니다 : 해결되지 않은 식별자 'json'을 사용하십시오 –