let url = "http://xyz/index_main.php?c=webservices&a=get&e=007"
Alamofire.request(url, method: .post, parameters: nil, encoding: JSONEncoding.default)
.responseJSON { response in
print(response)
//to get status code
if let status = response.response?.statusCode {
switch(status){
case 201:
print("example success")
default:
print("error with response status: \(status)")
}
}
//to get JSON return value
if let result = response.result.value {
let JSON = result as! NSDictionary
print(JSON)
}
Résultat :
{
"create_by" = 007;
"create_date" = "2016/06/20";
"due_date" = "2016/06/22";
"estimate_time" = "";
fixer = 007;
priority = High;
"project_code" = testing;
status = "Re-Open";
"task_id" = 228;
"task_title" = test;
tester = 007;
},
{
"create_by" = 006;
"create_date" = "2016/06/23";
"due_date" = "2016/06/24";
"estimate_time" = "";
fixer = 007;
priority = Critical;
"project_code" = "tanteida.c";
status = "In Progress";
"task_id" = 234;
"task_title" = testing;
tester = 006;
}
Je veux convertir en NSDictionary
et obtenir un tableau différent comme task_id
(tableau), mais j'obtiens cette erreur:
"Impossible de convertir la valeur de type '__NSArrayI' en NSDictionary"
Aidez-moi, s'il vous plaît
Merci d'avance
Votre réponse est de Array
de Dictionary
pas Dictionary
, donc si vous voulez tout le dictionnaire, vous pouvez y accéder en boucle.
if let array = response.result.value as? [[String: Any]] {
//If you want array of task id you can try like
let taskArray = array.flatMap { $0["task_id"] as? String }
print(taskArray)
}
Swift 4.1 +
if let resultArray = jsonResponse.result.value as? [[String: Any]] {
let taskArray = resultArray.compactMap { $0["task_id"] as? String }
}
C'est parce que votre service renvoie les résultats sous la forme d'un tableau. Ce que vous devez faire est de convertir le résultat en NSArray. Ensuite, vous pouvez accéder à des résultats séparés par index:
let JSON = result as! NSArray
let firstResult = results[0]