如何使排序不区分大小写
How to make a sort case insensitive
我的应用程序读取包含多家公司的 Firebase 数据库并将它们加载到 TableView。
我的密码是
class TableViewController: UITableViewController {
var clinics: [Clinic] = []
override func viewDidLoad() {
super.viewDidLoad()
ProgressHUD.show("Loading...")
let database = Database.database().reference()
let clinics = database.child("clinics")
// Clinics listeners
clinics.observe(DataEventType.childAdded) { (snapshot) in
let dados = snapshot.value as? NSDictionary
let clinic = Clinic()
clinic.id = snapshot.key
clinica.name = dados?["name"] as! String
self.clinics.append(clinic)
// Sorting
self.clinicas.sort(by: { [=10=].nome < .nome })
self.tableView.reloadData()
ProgressHUD.dismiss()
}
clinics.observe(DataEventType.childRemoved) { (snapshot) in
var index = 0
for clinic in self.clinics {
if clinic.id == snapshot.key {
self.clinics.remove(at: index)
}
index = index + 1
}
self.tableView.reloadData()
ProgressHUD.dismiss()
}
}
}
诊所结构为
class Clinica {
var id = ""
var name = ""
}
该代码运行良好,所有诊所都添加到我的 TableView 中。
没有像我预期的那样工作的是排序...下面的行有点排序但是是大小写相关的。我正在尝试按名称和不区分大小写排序。我在这里做了很多研究,但我真的找不到任何可以做到这一点的东西。
有没有办法按名称排序并且不区分大小写?
谢谢
假设 nome
属性 是 String
,你可以使用 compare(:options:)
:
self.clinicas.sort {
[=10=].nome.compare(.nome, options: .caseInsensitive) == .orderedAscending
}
我的应用程序读取包含多家公司的 Firebase 数据库并将它们加载到 TableView。 我的密码是
class TableViewController: UITableViewController {
var clinics: [Clinic] = []
override func viewDidLoad() {
super.viewDidLoad()
ProgressHUD.show("Loading...")
let database = Database.database().reference()
let clinics = database.child("clinics")
// Clinics listeners
clinics.observe(DataEventType.childAdded) { (snapshot) in
let dados = snapshot.value as? NSDictionary
let clinic = Clinic()
clinic.id = snapshot.key
clinica.name = dados?["name"] as! String
self.clinics.append(clinic)
// Sorting
self.clinicas.sort(by: { [=10=].nome < .nome })
self.tableView.reloadData()
ProgressHUD.dismiss()
}
clinics.observe(DataEventType.childRemoved) { (snapshot) in
var index = 0
for clinic in self.clinics {
if clinic.id == snapshot.key {
self.clinics.remove(at: index)
}
index = index + 1
}
self.tableView.reloadData()
ProgressHUD.dismiss()
}
}
}
诊所结构为
class Clinica {
var id = ""
var name = ""
}
该代码运行良好,所有诊所都添加到我的 TableView 中。
没有像我预期的那样工作的是排序...下面的行有点排序但是是大小写相关的。我正在尝试按名称和不区分大小写排序。我在这里做了很多研究,但我真的找不到任何可以做到这一点的东西。
有没有办法按名称排序并且不区分大小写?
谢谢
假设 nome
属性 是 String
,你可以使用 compare(:options:)
:
self.clinicas.sort {
[=10=].nome.compare(.nome, options: .caseInsensitive) == .orderedAscending
}