Благодарим вас за помощь в будущем! Это мой массив:Сортировать по расстоянию Swift 3
var malls: [Mall] = [
Mall(name:"yagey", distance:""),
Mall[name:"tigey", distance:"")
]
Как я могу сортировать торговые центры по mall.distance? Это мой Tableview
Tableview
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! EateriesTableViewCell
let mall = mallToDisplayAt(indexPath: indexPath)
let mallLocate = CLLocation(latitude: mall.latitude, longitude: mall.longitude)
print (mallLocate)
let distanceInMeters = mallLocate.distance(from: coords)/1000
let distanceInMetersString = String(format: "%.1f", distanceInMeters)
for index in 0..<malls.count {
var mall = malls[index] // copy a mall value
mall.distance = distanceInMetersString // change the copy of mall
malls[index] = mall // put the updated mall back into the array
}
cell.distanceLabel.text = distanceInMetersString + "км"
malls.sort() { $0.distance < $1.distance }
print (mall.distance)
return cell
}
Почему вы делаете сортировку в cellViewRotAt стола TableView? он запускается один раз каждый раз, когда строка становится видимой. Это не нужно. А также вы ссылаетесь на торговый центр из торговых центров - предполагая, что это то, что делает mallToDisplayAt, прежде чем сортировать его, что даст вам значение из несортированного массива с первого раза, когда он вызывается. Наконец, расстояние сохраняется в строке, чтобы получить точное сравнение во время сортировки, вам нужно сравнить значение float/int во время сортировки вместо строки, поскольку сравнение строк будет сравнивать char по char (12 меньше, чем 2, поскольку первый символ меньше) –
Это четвертый вопрос, который вы опубликовали сегодня по той же самой проблеме. Перестань. Придерживайтесь одного вопроса. Я сказал вам, что делать в вашем первом вопросе. Если у вас возникли проблемы с его работой, отредактируйте свой вопрос, чтобы показать свой новый код в конце и указать проблему, с которой вы столкнулись. –
Я должен сказать, что вы, кажется, находитесь над вашей головой. Вы не понимаете простых советов, как «сделать местоположение собственностью». Если вы все еще изучаете основы Swift, вы вряд ли сможете получить что-то такое же сложное, как создание табличного представления местоположений, отсортированных по расстоянию до местоположения пользователя, до тех пор, пока вы не начнете намного больше изучать. –