2016-03-21 13 views
0

ユーザーログイン/登録に使用するAndroidアプリでは、次の方法があります。AndroidボレーリクエストをiOS NSURL非同期リクエストに変換する

public void registerUser(final String username, final String email, final String password) { 
    pDialog.setMessage("Signing Up..."); 
    pDialog.show(); 

    request = new StringRequest(Method.POST, SL_URL, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String s) { 
      pDialog.dismiss(); 
      String[] split = s.split("Config.php"); 
      String after = split[1]; 
      try { 
       JSONObject jsonObject = new JSONObject(after); 
       boolean error = jsonObject.getBoolean("error"); 
       if (error) { 
        String errorMsg = jsonObject.getString("error_msg"); 
        Toast.makeText(getApplicationContext(), 
          errorMsg, Toast.LENGTH_LONG).show(); 

       } else { 
        session.setLogin(true, username, email); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }) { 
     @Override 
     protected Map<String, String> getParams() throws AuthFailureError { 
      HashMap<String, String> hashMap = new HashMap<>(); 
      hashMap.put("tag", "login"); 
      hashMap.put("username", name); 
      hashMap.put("password", password); 
      return hashMap; 
     } 
    }; 
    queue.add(request); 
} 

今私は、iOSのための私のアプリを書き込み、スウィフトでこれを再現しようとしています。これまでのところ私は、次のコードを持っている:

let username = usernameTxt.text 
     let password = passwordTxt.text 
     let urlPath: String = "***" 
     let url: NSURL = NSURL(string: urlPath)! 
     let request1: NSMutableURLRequest = NSMutableURLRequest(URL: url) 

     request1.HTTPMethod = "POST" 
     let stringPost="tag=login&username=" + username! + "&password=" + password! // Key and Value 
     NSLog(stringPost) 
     let data = stringPost.dataUsingEncoding(NSUTF8StringEncoding) 

     request1.timeoutInterval = 60 
     request1.HTTPBody=data 
     request1.HTTPShouldHandleCookies=false 

     let queue:NSOperationQueue = NSOperationQueue() 

     NSURLConnection.sendAsynchronousRequest(request1, queue: queue, completionHandler:{ (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in 
      do { 
       var jsonResult: NSDictionary = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as! NSDictionary 
      } catch _ {} 

     }) 

今すぐ一般的にはiOSの開発とスウィフトに新しい誰かとして、私は次のような質問があります。

  1. をprogressDialog Iを複製するための最良の方法は何ですかSwiftのJavaで使用する場合、要求が完了してからそれを破棄する必要があります。私はこれがcompletionHandlerに置かれるべきだと推測していますが、進捗ダイアログに使用するUI要素は不明です。

  2. レスポンスをStringとして取得し、split関数の動作をレプリケートして、Javaコードと同様にjsonObjectに変換します。

  3. エラーメッセージを表示するために使用されたトーストを複製する最良の方法は何ですか。私はボタンで閉じなければならないダイアログを使うのはここでは最適だとは思わない。

ありがとうございます。

答えて

1

私はAndroidとIOS用のアプリケーションも開発中です。ここで私は初心者としても私の直面しているあなたの3つの問題に答えました。これがあなたに役立つことを願っています。 HTTPリクエスト

private func showLoadingHUD() { 
    let hud = MBProgressHUD.showHUDAddedTo(self.view, animated: true) 
    hud.labelText = "Loading..." 
} 

とhideLoadingHUD()を行う前に

利用showLoadingHUD():スウィフト.ThereでprogressDialogを複製する

1)使用MBProgressHUD LinkはprogressDialogを示し、却下するには、2つの方法でありますサーバーからの応答を受信した後

private func hideLoadingHUD() { 
    MBProgressHUD.hideAllHUDsForView(self.view, animated: true) 
} 

2)あなたはAlamofire Linkを使用できますNetwork stuffを扱うことができ、Stringで簡単にレスポンスを取得できます。 例:

self.showLoadingHUD() 
       Alamofire.request(.GET, data, parameters: nil) 
        .response { (request, response, data, error) in 
         print(data) // if you want to check data in debug window. 
         let Result = NSString(data: data!, encoding: NSUTF8StringEncoding) 
         Result!.stringByReplacingOccurrencesOfString("\"", withString: "") 
         if(newResult == "1"){ 
          self.navigationController!.popViewControllerAnimated(true) 
          JLToast.makeText("Success").show() 
         } 
         else if (newResult == "0"){ 
          JLToast.makeText("Failed").show() 
         } 

         self.hideLoadingHUD() 

3)mankee TOAを、時間の短い期間のための情報を表示し、自分自身を消滅させる目的で使用されています。ここでは、JLToastであるToastのようなAndroidを使用できます。 githubで利用できます。

JLToast.makeText("Success").show() 
関連する問題