Проблема в сортировке до 10 ячеек происходит?
Делаю тест задание и мне нужно до 15 ячеек чтоб выходило при сортировке сделал фильтр через SheetBottom.Сейчас у меня код написан и как то странно сортировка идет не по всем 30 ячейкам, а раздельно по 10 ячеек.
import SwiftUI
struct Car: Codable, Hashable {
var name: String
var image: String
var ratings: Int
}
struct CarView: View {
func jsonCar() -> [Car]{
let url = Bundle.main.url(forResource: "car", withExtension: "json")!
let data = try! Data(contentsOf: url)
let decoder = JSONDecoder()
let cars = try? decoder.decode([Car].self, from: data)
return cars!
}
@State private var showingSheet = false
@State var sortType = "default"
var body: some View {
NavigationView {
List(jsonCar().sorted(by: { (min:Car,max: Car) -> Bool in
if sortType == "Min" {
return min.ratings < max.ratings
} else if sortType == "Max" {
return min.ratings > max.ratings
} else {
return false
}
}), id: \.self)
{ item in
HStack {
CarImage(item.image)
VStack(alignment: .leading, spacing: 0) {
Text(item.name).padding(5)
HStack {
Text("Rating: ").padding(5)
ForEach(0..<item.ratings) { _ in
Image(systemName: "star.fill")
.foregroundColor(Color.yellow)
}
ForEach(item.ratings..<5) { _ in
Image(systemName: "star") .foregroundColor(Color.gray.opacity(0.5))
}
}
}
}
}
.navigationBarTitle("Cars")
.navigationBarItems(trailing: Button("Sort", action: {
self.showingSheet = true
}))
.actionSheet(isPresented: $showingSheet) {
ActionSheet(title: Text("Фильтр"), message: Text("Выбирите сортировку"), buttons: [
.default(Text("Отмена"), action: {self.sortType = "default"}),
.default(Text("По убыванию"), action: {self.sortType = "Min"}),
.default(Text("По возрастанию"), action: {self.sortType = "Max"}),
.cancel()
])
}
}
}
}
func CarImage(_ image: String) -> some View {
return Image(image)
.resizable()
.clipShape(Circle())
.overlay(Circle().stroke(Color.white, lineWidth: 2))
.padding(2)
.overlay(Circle().stroke(Color.black.opacity(0.2)))
.shadow(radius: 3)
.padding(4)
.frame(width: 72, height: 72) }
}
struct CarList_Previews: PreviewProvider {
static var previews: some View {
CarView()
.previewDevice("iPhone XS")
}
}