如何按字母顺序对 API 中的 JSON 数组进行排序?

How to sort JSON Array from API alphabetically?

我是编程界的新手,尤其是 Swift。现在我在 Xcode 中使用 Swift 5。通过下面的代码,我成功地从 API 中获取了 JSON 数据并将其放入 Table 视图中。此数据默认按 "id" 排序。 如何根据 "first_name" 按字母顺序对这些数据进行排序并将其放入 Table 视图?

// Model.swift
struct UserModel {
    var id: Int?
    var first_name: String?
    var last_name: String?

    init(data: JSON?) {
        self.id = data?["id"].int
        self.first_name = data?["first_name"].string
        self.last_name = data?["last_name"].string
    }
}

// UserViewController.swift
var users: [UserModel]?

// API Get result
switch result {
            case .success(let value):
                if let data = JSON(value).array {
                    self.users = data.map({ UserModel(data: [=12=]) })
                }
                self.tableView.reloadData()
            case .failure(let error):
                print(error.localizedDescription)
            }

以便对 swift 中的数组结构进行排序。你可以简单地做

self.users.sort(by: {[=10=].first_name < .first_name})

Swift 3 & Swift 4 & Swift 5

self.users.sorted(by: { [=10=].first_name < .first_name})

可以使用以下代码对对象数组进行排序

self.users.sorted(by: {[=10=].first_name < .first_name})

忽略大小写排序。

self.users.sorted(by: {[=11=].first_name.lowercased() < .first_name.lowercased()})

您可以使用 sort(by:) 方法对 users array 进行排序,

users?.sort(by: { (user1, user2) -> Bool in
    if let name1 = user1.first_name, let name2 = user2.first_name {
        return name1 < name2
    }
    return false
})

sort(by:) 就地对集合进行排序。

Sorts the collection in place, using the given predicate as the comparison between elements.

异地排序可以使用sorted(by:)的方法

Returns the elements of the sequence, sorted using the given predicate as the comparison between elements.