我有一个列表,我需要按“流行度”(更流行到不太流行)排序,这个值来自 JSON API。SwiftUI 中是否有按给定值排序的函数?
JSON 如下所示:
[
{
"id": 1,
"nombre": "The design of every day things",
"autor": "Don Norman",
"disponibilidad": true,
"popularidad": 70,
"imagen": "https://images-na.ssl-images-amazon.com/images/I/410RTQezHYL._SX326_BO1,204,203,200_.jpg"
},
{
"id": 2,
"nombre": "100 años de soledad",
"autor": "Garcia Marquez",
"disponibilidad": false,
"popularidad": 43,
"imagen": "https://images-na.ssl-images-amazon.com/images/I/51egIZUl88L._SX336_BO1,204,203,200_.jpg"
}
]
Run Code Online (Sandbox Code Playgroud)
还有更多,这只是其中的一部分。人气是popularidad。
这是目前我的清单:
var body: some View {
NavigationView {
ScrollView {
VStack(alignment: .leading) {
ForEach(booksVM.books) { book in
HStack {
Text(book.nombre)
Spacer()
}
Text(book.autor)
Spacer()
}
}.padding(.leading, 5)
}
.navigationBarTitle("Bienvenido a la librería flux")
.onAppear(perform: self.booksVM.fetchBooks)
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要更多代码来理解这一点,请告诉我。
您可以.sorted用来对数组进行排序。
这是一个使用您的数据的简单示例。如果您在操场上尝试,这将起作用。
let data = """
[
{
"id": 1,
"nombre": "The design of every day things",
"autor": "Don Norman",
"disponibilidad": true,
"popularidad": 70,
"imagen": "https://images-na.ssl-images-amazon.com/images/I/410RTQezHYL._SX326_BO1,204,203,200_.jpg"
},
{
"id": 2,
"nombre": "100 años de soledad",
"autor": "Garcia Marquez",
"disponibilidad": false,
"popularidad": 43,
"imagen": "https://images-na.ssl-images-amazon.com/images/I/51egIZUl88L._SX336_BO1,204,203,200_.jpg"
}
]
""".data(using: .utf8)!
struct Book: Codable {
let id: Int
let popularidad: Int
let nombre: String
let autor: String
let disponibilidad: Bool
let imagen: String
}
let decoder = JSONDecoder()
let books = try decoder.decode([Book].self, from: data)
let result = books.sorted {
$0.popularidad > $1.popularidad
}
print(result)
Run Code Online (Sandbox Code Playgroud)
在使用书籍数组之前,您只需执行排序 ForEach
因此,您所要做的就是对您的Book对象数组进行排序。
ForEach(booksVM.books.sorted { $0.popularidad > $1.popularidad}) { book in
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3834 次 |
| 最近记录: |