J'essaie d'analyser les données JSON
en utilisant SwiftyJSON
dans un tableau à utiliser dans mon TableView
. Cependant, même si je peux demander les données et les analyser dans un tableau, je ne peux pas le renvoyer à partir de la fonction getObjects
car cela est fait de manière asynchrone. J'ai essayé d'utiliser un gestionnaire d'achèvement, et après avoir suivi plusieurs tutoriels, il semble que je manque quelque chose.Gérer la requête asynchrone Alamofire en utilisant SwiftyJSON
Est-ce que quelqu'un sait comment je peux retourner le tableau à utiliser dans mon TableViewController
?
Table View Controller
let objects = [Objects]()
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let urlString = "URLSTRING"
objects = dataManager.getObjects(urlString)
print("objects in view controller products array \(objects.count)")
self.tableView.reloadData
}
Demande Fonctions
class DataManager {
func requestObjects(_ stringUrl: String, success:@escaping (JSON) -> Void, failure:@escaping (Error) -> Void) {
print("Request Data")
Alamofire.request(stringUrl, method: .get).validate().responseJSON { response in
switch response.result {
case .success(let value):
let json = JSON(value)
print("responce success")
success(json)
case .failure(let error):
print(error)
} //End of switch statement
} //End of alamofire request
} //End of request function
func getObjects(_ urlString:String) -> [Object] {
var objects = [Object]()
requestObjects(urlString, success: { (JSONResponse) -> Void in
let json = JSONResponse
for item in json["items"] {
let title = item.1["title"].string
objects.append(Object(title: title!))
}
print("Number of objects = \(objects.count)")
}) {
(error) -> Void in
print(error)
}
print(objects) // Prints empty array
return objects // Array is empty
}
}