У меня возникли проблемы с кратким извлечением данных из API, добавлением текущего местоположения пользователя в объект и последующей сортировкой данных на основе рассчитанного расстояния.
Вопросы stackoverflow не совсем отвечают на проблему, с которой я столкнулся. См. здесь: Как сортировать сообщения, прочитанные из JSON. файл сервера в Swift.
В настоящее время я загружаю данные API из Alamofire и отображаю эти данные с помощью UITableViewController.
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.title = q.capitalizedString
Alamofire.request(.GET, "http://www.thesite.com/api/v1/things", parameters: ["q" : q])
.responseJSON { response in
let JSONObject = JSON(response.result.value!)
self.results = JSONObject["things"]
for (key, _) in self.results {
let intKey: Int = Int(key)!
var thisItem: JSON = self.results[intKey]
let geoLat = thisItem["place"][0]["location"]["geo"][1].double ?? 37.763299
let geoLong = thisItem["place"][0]["location"]["geo"][0].double ?? -122.419356
let destination = CLLocation(latitude: geoLat, longitude: geoLong)
let setLocation = CLLocation(latitude: self.currentLocation.latitude, longitude: self.currentLocation.longitude)
let distanceBetween: CLLocationDistance = destination.distanceFromLocation(setLocation)
thisItem["distance"].double = distanceBetween
self.results[intKey] = thisItem
}
self.tableView.reloadData()
}
}
Я получаю данные из API и успешно добавляю расстояние между местоположением пользователя и местом назначения.
Однако теперь мне нужно отсортировать объект JSON (SwiftyJSON) от наименьшего до наибольшего расстояния. Вот где я застрял.
структура данных в момент перезагрузки tableView (как объекта JSON) по существу:
results = [
{"title": "Chai", "distance": "1245.678575"},
{"title": "Espresso", "distance": "765845.678575"},
{"title": "Drip Coffee", "distance": "23445.678575"}
...
]
Как бы я мог: 1) преобразовать объект в NSArray и отсортировать; или 2) просто отсортировать объект? Когда лучше всего добавлять и сортировать расстояние - следует ли мне делать это перед преобразованием в объект JSON.
Любая помощь приветствуется! Спасибо!