简体   繁体   English

如何按字母顺序从API排序JSON数组?

[英]How to sort JSON Array from API alphabetically?

I'm a newbie in programming world, especially Swift. 我是编程领域的新手,尤其是Swift。 Now I am using Swift 5 in Xcode. 现在我在Xcode中使用Swift 5。 By following code below, I successfully get JSON data from API and put it in Table View. 通过下面的代码,我成功地从API获取了JSON数据并将其放入“表格视图”中。 This data default sorted by "id". 该数据默认按“ id”排序。 How to sort this data alphabetically based on "first_name" and put it in Table View? 如何根据“ first_name”按字母顺序对数据进行排序并将其放入“表格视图”中?

// 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: $0) })
                }
                self.tableView.reloadData()
            case .failure(let error):
                print(error.localizedDescription)
            }

雨燕3&雨燕4&雨燕5

self.users.sorted(by: { $0.first_name < $1.first_name})

Sorting for array of object can be done using below code 可以使用以下代码对对象数组进行排序

self.users.sorted(by: {$0.first_name < $1.first_name})

Sorting for ignore case. 排序忽略大小写。

self.users.sorted(by: {$0.first_name.lowercased() < $1.first_name.lowercased()})

inorder to sort array struct in swift. 为了快速排序数组结构。 you can simple do 你可以简单地做

self.users.sort(by: {$0.first_name < $1.first_name})

You can sort the users array using sort(by:) method like so, 您可以像这样使用sort(by:)方法对users array进行sort(by:)

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. sort(by:)对集合进行原位排序。

Sorts the collection in place, using the given predicate as the comparison between elements. 使用给定的谓词作为元素之间的比较,对集合进行排序。

You can use sorted(by:) method for out-place sorting. 您可以使用sorted(by:)方法进行场所排序。

Returns the elements of the sequence, sorted using the given predicate as the comparison between elements. 返回序列中的元素,使用给定谓词作为元素之间的比较进行排序。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM