【问题标题】:How to make a sort case insensitive [duplicate]如何使排序不区分大小写[重复]
【发布时间】:2019-11-10 00:05:31
【问题描述】:

我的应用程序读取多个公司的 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 中。

没有按我预期工作的事情是排序...下面的行有点做排序但取决于大小写。我正在尝试按名称和不区分大小写进行排序。我在这里做了很多研究,但我真的找不到任何可以做到的。

有没有办法按名称排序并且不区分大小写?

谢谢

【问题讨论】:

    标签: swift sorting case-insensitive


    【解决方案1】:

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

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

    【讨论】:

    • 这个问题有很多重复项。
    猜你喜欢
    • 2015-06-05
    • 1970-01-01
    • 2015-02-21
    • 2019-01-31
    • 2020-09-13
    • 2012-06-22
    • 1970-01-01
    • 2021-02-18
    • 2014-02-19
    相关资源
    最近更新 更多