如何在表格视图单元格中按字母顺序对 JSON 数据进行排序
How to sort JSON data alphabetically in tableview cell
我从服务器获取 JSON 格式的用户数据。现在我可以获得用户详细信息,但它会自动按日期排序。以下是从服务器获取用户详细信息的代码:
func getAllDoctor(){
let param = ["page":"1"]
print(param,"param123")
Alamofire.request(helper.MainURL + "patient/getAllDoctor", method:.post,parameters: param).responseJSON { response in
self.stopAnimating()
if let result = response.result.value {
print(1)
let DictResponse = JSON(result as! NSDictionary)
if DictResponse["success"].boolValue
{
self.marrDoctorList = DictResponse["data"].arrayValue
self.tblDoctors.reloadData()
}
}
}.responseString { (strREsopns) in
print(strREsopns)
}
}
这是表视图函数:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return marrDoctorList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! AllDoctorsTVC
cell.selectionStyle = .none
cell.viewBG.layer.cornerRadius = 5
cell.viewBG.layer.borderWidth = 1
cell.viewBG.layer.borderColor = UIColor.lightGray.cgColor
cell.lblName.text = self.marrDoctorList[indexPath.row]["name"].stringValue
cell.lbl1.text = self.marrDoctorList[indexPath.row]["categories_name"].stringValue
cell.imgDoctor.sd_setImage(with: URL(string: marrDoctorList[indexPath.row]["profile_image"].stringValue), placeholderImage: UIImage(named: ""))
cell.imgDoctor.layer.cornerRadius = cell.imgDoctor.frame.height / 2
cell.imgDoctor.clipsToBounds = true
cell.imgRead.isHidden = true
return cell
}
我想按用户名字母顺序对它们进行排序。
重新加载 tableView(作为 JSON 对象)时的数据结构本质上是:
{"success":true,"data":[
{"doctor_id":"149","name":"Ferit Dadasli","description":"Ortodontist","expertise_categories":"2","categories_name":"Di\u015f Hekimi","profile_image":"http:\/\/www.....net\/app\/assets\/default\/user1.png"},
{"doctor_id":"141","name":"Ahmet Karaman","description":"Pedodontist","expertise_categories":"1","categories_name":"Doktor","profile_image":"http:\/\/www.....net\/app\/assets\/default\/user1.png"},
...
您可以尝试使用这样的排序函数对 "self.marrDoctorList" 进行排序:
self.marrDoctorList.sorted { [=10=]. name.lowercased() < .name.lowercased() }
例如在您的代码中
if DictResponse["success"].boolValue
{
self.marrDoctorList = DictResponse["data"].arrayValue.sorted { [=11=]. name.lowercased() < .name.lowercased() }
//or
self.marrDoctorList.sorted { [=11=]. name.lowercased() < .name.lowercased() }
self.tblDoctors.reloadData()
}
我从服务器获取 JSON 格式的用户数据。现在我可以获得用户详细信息,但它会自动按日期排序。以下是从服务器获取用户详细信息的代码:
func getAllDoctor(){
let param = ["page":"1"]
print(param,"param123")
Alamofire.request(helper.MainURL + "patient/getAllDoctor", method:.post,parameters: param).responseJSON { response in
self.stopAnimating()
if let result = response.result.value {
print(1)
let DictResponse = JSON(result as! NSDictionary)
if DictResponse["success"].boolValue
{
self.marrDoctorList = DictResponse["data"].arrayValue
self.tblDoctors.reloadData()
}
}
}.responseString { (strREsopns) in
print(strREsopns)
}
}
这是表视图函数:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return UITableView.automaticDimension
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return marrDoctorList.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! AllDoctorsTVC
cell.selectionStyle = .none
cell.viewBG.layer.cornerRadius = 5
cell.viewBG.layer.borderWidth = 1
cell.viewBG.layer.borderColor = UIColor.lightGray.cgColor
cell.lblName.text = self.marrDoctorList[indexPath.row]["name"].stringValue
cell.lbl1.text = self.marrDoctorList[indexPath.row]["categories_name"].stringValue
cell.imgDoctor.sd_setImage(with: URL(string: marrDoctorList[indexPath.row]["profile_image"].stringValue), placeholderImage: UIImage(named: ""))
cell.imgDoctor.layer.cornerRadius = cell.imgDoctor.frame.height / 2
cell.imgDoctor.clipsToBounds = true
cell.imgRead.isHidden = true
return cell
}
我想按用户名字母顺序对它们进行排序。
重新加载 tableView(作为 JSON 对象)时的数据结构本质上是:
{"success":true,"data":[
{"doctor_id":"149","name":"Ferit Dadasli","description":"Ortodontist","expertise_categories":"2","categories_name":"Di\u015f Hekimi","profile_image":"http:\/\/www.....net\/app\/assets\/default\/user1.png"},
{"doctor_id":"141","name":"Ahmet Karaman","description":"Pedodontist","expertise_categories":"1","categories_name":"Doktor","profile_image":"http:\/\/www.....net\/app\/assets\/default\/user1.png"},
...
您可以尝试使用这样的排序函数对 "self.marrDoctorList" 进行排序:
self.marrDoctorList.sorted { [=10=]. name.lowercased() < .name.lowercased() }
例如在您的代码中
if DictResponse["success"].boolValue
{
self.marrDoctorList = DictResponse["data"].arrayValue.sorted { [=11=]. name.lowercased() < .name.lowercased() }
//or
self.marrDoctorList.sorted { [=11=]. name.lowercased() < .name.lowercased() }
self.tblDoctors.reloadData()
}