Ich habe die folgende Methode in meinem Android-App, die ich für die Benutzeranmeldung/Registrierung verwenden.Konvertieren von Android Volley Anfrage an iOS NSURL asynchrone Anforderung
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);
}
Jetzt schreibe ich meine App für iOS und versuchen, dies in Swift zu replizieren. Bisher habe ich den folgenden Code:
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 _ {}
})
Jetzt als jemand neu in iOS Entwicklung und Swift im Allgemeinen, ich habe folgende Fragen:
Was ist der beste Weg, um die progressDialog ich zu replizieren Verwendung in Java in Swift, muss sie sichtbar sein, bis die Anforderung abgeschlossen ist und dann soll es zurückzuweisen. Ich vermute, dies sollte in den completionHandler platziert werden, aber ich bin nicht sicher, welche UI-Element für den Fortschritt Dialog zu verwenden.
Wie erhalte ich meine Antwort als String und repliziere das Verhalten der Split-Funktion, und konvertiere das Ergebnis davon in ein jsonObject, wie ich es in meinem Java-Code mache.
Was ist der beste Weg, der Toast zu replizieren verwendet, um die Fehlermeldung anzuzeigen. Ich denke nicht, dass die Verwendung eines Dialogs, der mit einem Button geschlossen werden muss, hier optimal ist.
Vielen Dank.