如何使排序不区分大小写

时间:2019-11-10 00:05:31

标签: swift sorting 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: { $0.nome < $1.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中。

无法正常工作的是排序...下面的行可以进行排序,但要视情况而定。我正在尝试按名称排序并且不区分大小写。我在这里做了很多研究,但我真的找不到能做到的任何事情。

是否可以按名称排序并且不区分大小写?

谢谢

1 个答案:

答案 0 :(得分:1)

假设nome属性是String,则可以使用compare(:options:)

self.clinicas.sort {
    $0.nome.compare($1.nome, options: .caseInsensitive) == .orderedAscending
}