如何按字母顺序对 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.
我是编程界的新手,尤其是 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.