2016-07-25 3 views
0

내 친구가 서버를 코드화했으며 내 앱을 서버에 연결하려고했습니다. 하지만 지금은 서버 연결에 문제가 있습니다. 검색 후 많은 것을 발견했습니다. (액세스 토큰을 얻는 방법, SHA256, Alamofire 라이브러리 등 사용)내 앱을 서버/JSON/Swift/iOS에 연결하는 가입 메커니즘

하지만 Google API를보고 신속한 앱을 코딩하는 것은 어렵습니다. 누군가 내 앱으로 서버를 연결하기위한 좋은 예를 돕기를 바랍니다.

아래의 API는 가입을위한 API입니다.

// ch-----.co.kr:8081/api/user/createAccount

요청 유형 : POST는 JSON/urlencoded를

매개 변수

userId를 : 사용자 계정
userPassword에 이름 : 계정의 사용자 암호
USEREMAIL : 사용자의 이메일 계정에 대한

성공,

{ "메타": "의 createAccount" "데이터": "성공" } 실패

,

{ "메타": "의 createAccount" "데이터" "실패" }

alamofire를 사용하고 첫 번째 예를 들어보세요. 주십시오 ..

및 코드는 등록 페이지의 일부입니다.

//MARK:- Infoamation 
@IBOutlet weak var username: UITextField! 
@IBOutlet weak var email: UITextField! 
@IBOutlet weak var password: UITextField! 
@IBOutlet weak var passwordRe: UITextField! 

@IBOutlet weak var admitUseRule: UISwitch! 
@IBOutlet weak var admitPrivacyRule: UISwitch! 

//register action 
@IBAction func registerAction(sender: AnyObject) { 

    let usernameText = username.text 
    let emailText = email.text 
    let passwordText = password.text 
    let passwordReText = passwordRe.text 


    //check if filling out ID 
    guard usernameText?.isEmpty != true else{ 
     displayAlert("아이디를 입력하세요") 
     return 
    } 

    //check if the id counts less than 20 
    guard usernameText?.characters.count < 20 else{ 
     displayAlert("아이디를 20자 이내로 입력하세요") 
     return 
    } 

    //check iD validation 
    guard isValidID(self.username.text!) != false else{ 
     displayAlert("아이디를 영어와 숫자의 조합으로 입력하세요") 
     return 
    } 

    //check if filling out email 
    guard emailText?.isEmpty != true else{ 
     displayAlert("이메일 입력하세요") 
     return 
    } 

    //check email validation 
    let validLogin = isValidEmail(self.email.text!) 

    guard validLogin != false else { 
     displayAlert("정확한 이메일을 입력하세요") 
     return 
    } 

    //check if the user fill out password 
    guard passwordText?.isEmpty != true else { 
     displayAlert("비밀번호를 입력하세요") 
     return 
    } 

    //check the password is same 
    guard passwordText == passwordReText else { 
     displayAlert("입력한 비밀번호가 같지 않습니다") 
     return 
    } 

    //admit for useRule 
    guard admitUseRule.on == true else { 
     displayAlert("이용약관에 동의해주세요") 
     return 
    } 

    //admit for privacyRule 
    guard admitPrivacyRule.on == true else { 
     displayAlert("개인정보 취급 방침에 동의해주세요") 
     return 
    } 

    //connect server 
    //////////////////// 



    dismissViewControllerAnimated(true, completion: nil) 


} 

답변

0

나는 다음을 수행하는 것이 좋습니다 것입니다 : -

 enum UserValidity: String { 
      case Valid = "success" 
      case Invalid = "failed" 
     } 
    // Note: if you wish to define these as Optionals i.e. e.g. var userEmail:String?, userPasswod:String? then you need to unwrap them before when making POST request 
    // var userEmail:String = "" , userPassword :String = "" 

     // Your Parameters since you already have variables consisting of email id and password use those in code 
     // let parameters = ["uEmail": userEmail,"uPass":userPassword] 

    // if defined as Optionals change above to 
    let parameters = ["uEmail" : "\(emailText)", "uPass": "\(passwordText)"] 

     //Post your parameters to PHP file and since response expected as mentioned is { "meta": "createAccount", "data": "success" } which is json Format 
        Alamofire.request(.POST,"http://co.kr:8081/api/user/createAccount", parameters: parameters) 
         .validate().responseJSON { response in 
          if let responseJson = response.result.value { 
           let validity = responseJson["data"] as! String 
           if validity == UserValidity.Valid.rawValue { 
           // user is valid 
           } 
          else { 
          // user is invalid 
           } 

          } 
        } 
+0

"열거 원시 값이없는 경우 열거 경우 원시 값을 가질 수 없습니다?" 열거 형 줄에서 발생 // – kimpro

+0

죄송합니다 내 잘못 정의 열거 형 데이터 형식 즉, 열거 형 userValidity : String – MShah

+0

감사하지만 질문이 있습니다. 하나는 매개 변수에 관한 것입니다. "uEmail", "uPass"는 userEmail, userPassword (서버의 변수)에 대한 데이터입니까? 두 번째 "[String : String?] '을 예상되는 인수 유형'[String : Anyobject] '로 변환 할 수 없습니다.' – kimpro

관련 문제