Swift - фильтр массива, а затем обновить основной массив - PullRequest
0 голосов
/ 04 декабря 2018
let cities = [{ "name" : "SF", "id" : 4, "population" : 10, favorite: false},  { "name" : "NY", "id" : 5, "population" : 20, favorite: false}, { "name" : "DC", "id" : 6, "population" : 30, favorite: false}

У меня есть массив, и, скажем, если пользователь применяет фильтр на основе совокупности, я могу отфильтровать массив с помощью метода filter , но он дает мне другой массив с отфильтрованными данными.,В фильтрованном массиве пользователь может добавить город в избранное, и когда пользователь удаляет фильтр, мне нужно показать полный список городов с индикатором избранного.Проблема в том, что отфильтрованный массив является отдельным массивом, и полный массив не знает, было ли изменено свойство в отфильтрованном массиве.Есть ли более простой способ справиться со всем этим?Могу ли я отфильтровать основной массив вместо создания другого?

1 Ответ

0 голосов
/ 27 февраля 2019

Создать структуру JSON

struct City {
    var name : String = ""
    var id : Int = 0
    var population : Int = 0
    var favorite : Bool = false
}

Это массив городов

var cities = [City(name: "SF", id: 4, population: 10, favorite: false),City(name: "NY", id: 5, population: 10, favorite: false),City(name: "DC", id: 6, population: 30, favorite: false)]

Чем применить фильтр по городам на основе населения == 10

var filter = cities.filter({ $0.population == 10 })

После этого сделайте один из них любимым

Ex:- filter[1].favorite = true

, а также обновите этот город в основном массиве

cities = cities.map { (city) -> City in
    var city = city
    if city.id == filter[1].id {
        city.favorite = true
    }
    return city
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...