Je veux afficher le msg sur {"Statut": 500, "MSG": "\" Les informations sont invalides \ ""} p>
BlockQuote> J'utilise SWIFT4 dans XCode10, voici mon code: P> uitextview code> à l'aide du statut, mais il affiche "SUCCESS: 200":
import UIKit
import Alamofire
import SwiftyJSON
class VerifyAccount: UIViewController {
let verify_url = "http://192.168.43.222:3000/mobile/account_verification"
@IBOutlet weak var msgHandler: UITextView!
func postData(url: String , parameters: [String : String]) {
Alamofire.request(url, method: .post, parameters: parameters).responseJSON {
response in
if response.result.isSuccess {
let postJSON : JSON = JSON(response.result.value!)
print(postJSON)
if let status = response.response?.statusCode {
switch(status) {
case 200:
self.msgHandler.text = ("Success: \(status)")
case 500:
self.msgHandler.text = ("Invalid: \(status)")
default:
}
}
} else {
print("Error: \(String(describing: response.result.error))")
}
}
}
@IBAction func verifyBtn(_ sender: Any) {
let compare : [String : String] = ["id" : id , "fname" : fname , "lname" : lname]
postData(url: verify_url , parameters : compare)
}
}
4 Réponses :
Vous pouvez obtenir une valeur code>, int code>, etc ...) de votre json Objet comme: let status = postJSON["status"].int ?? 0
let message = postJSON["msg"].string ?? "No Message"
Vous devez changer votre façon de gérer votre réponse. J'ai mis à jour votre code, cela devrait fonctionner.
import UIKit
import Alamofire
import SwiftyJSON
class VerifyAccount: UIViewController {
let verify_url = "http://192.168.43.222:3000/mobile/account_verification"
@IBOutlet weak var msgHandler: UITextView!
func postData(url: String , parameters: [String : String]) {
Alamofire.request(url, method: .post, parameters: parameters).responseJSON {
response in
switch response.result {
case .success:
print("server response: \(response.value!)")
do {
if var json = try JSONSerialization.jsonObject(with: response.data!, options: []) as? [String:Any] {
// Get value by key
var message = "";
if let msg = json["msg"] as? String
{
message = msg; // your message is here, you can do anything with it, whatever you want.
}
var status = 0;
if let st = json["status"] as? Int
{
status = st;
}
}
} catch let error as NSError {
}
break
case .failure(let error):
self.delegate.APIOnError(requestCode: requestCode);
print("server error: \(error.localizedDescription)")
}
}
}
Analysez vos données de réponse telles que
guard data _ = response.result.value as? [String: Any] else {
print("Error: \(String(describing: response.result.error))")
return
}
let message = data["msg"] as? String ?? "Unable to parse message"
if let statusCode = data["status"] as? Int {
switch statusCode {
case 200: self.msgHandler.text = ("Success: \(message)")
case 500: self.msgHandler.text = ("Invalid: \(message)")
default:self.msgHandler.text = ("Invalid status code")
}
}
Vous utilisiez de mauvaises données pour analyser. Vous pouvez essayer ceci:
Essayez d'utiliser
postjson ["msg"]. chaîne code>Apparemment, le code d'état code> de la réponse code> code> et le statut
code> dans le JSON est différent.