Фильтрация данных в массиве с помощью функции struct - PullRequest
0 голосов
/ 24 апреля 2020

Пример структуры

struct Sample {
       var name: String
       var status: String
    }

и массива

@Published var data = [Sample(name: "A", status: "active"), 
                       Sample(name: "B", status: "active"), 
                       Sample(name: "C", status: "closed")]

Состояние должно иметь 2 параметра: «активный» и «закрытый»

Как фильтровать только » закрытые "единицы

ForEach(data) { data in 
    List data....
}

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Прежде всего, вам нужно соответствовать Identifiable, чтобы определить разницу элементов:

extension Sample: Identifiable {
    var id: String { self.name }
}

Затем вы можете отфильтровать ваш массив как data.filter { $0.status == "closed" }.

Рабочий пример (исключая дополнительные зависимости):

struct ContentView: View {

    @State var data = [
        Sample(name: "A", status: "active"),
        Sample(name: "B", status: "active"),
        Sample(name: "C", status: "closed")
    ]

    var body: some View {
        ForEach(data.filter { $0.status == "closed" } ) { data in
            Text(data.name)
        }
    }
}
0 голосов
/ 24 апреля 2020

Вы можете использовать filter для этой цели:

let filtered = data.filter{ $0.status.contains("closed") }
filtered.forEach { print($0) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...