У меня есть следующий метод в приложении для Android, который я использую для входа/регистрации пользователя.Преобразование Android Volley Запрос на асинхронный запрос 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 и пытаюсь воспроизвести его в Swift. До сих пор у меня есть следующий код:
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 и Swift в целом, у меня есть следующие вопросы:
Что является лучшим способом для репликации progressDialog I использовать в Java в Swift, он должен быть видимым до тех пор, пока запрос не будет завершен, и затем его следует отклонить. Я предполагаю, что это должно быть помещено в completeHandler, однако я не уверен, какой элемент пользовательского интерфейса использовать для диалога прогресса.
Как получить свой ответ как String и воспроизвести поведение функции split, а затем преобразовать результат этого в jsonObject, как в моем Java-коде.
Каков наилучший способ репликации тоста, используемый для отображения сообщения об ошибке. Я не думаю, что использование диалога, которое должно быть закрыто с помощью кнопки, было бы оптимальным.
спасибо.